「検索どおりに検索」アルゴリズムとも呼ばれる動的検索アルゴリズムは、検索バーのオートコンプリートなどの機能を実装するためによく使用されます。 このアルゴリズムは、ユーザーの入力と利用可能なデータに基づいてリアルタイムの提案を提供します。
使い方
- 項目(単語、名前、製品など) のリストを含むデータセットから始めます。
- ユーザーが各文字を入力すると、検索クエリが更新されます。
- 現在の検索クエリに基づいてデータセットをフィルタリングします。
- フィルタリングされた結果をリアルタイムでユーザーに表示します。
例
プログラミング言語のデータセットを考えてみましょう: ["C"、"C++"、" Java "、" Python "、" JavaScript "、" Ruby "、" Swift "]。
- ユーザーは「C」と入力します。 フィルタリングされた結果: ["C"、"C++"]。
- ユーザーは「C++」と入力します。 フィルタリングされた結果: ["C++"]。
- ユーザーは「 Java 」と入力します。 フィルタリングされた結果: [" Java "、" JavaScript "]。
- ユーザーは「Py」と入力します。 フィルタリングされた結果: [" Python "]。
- ユーザーは「Jav」と入力します。 フィルタリングされた結果: [" Java "、" JavaScript "]。
C++ のコード例
#include <iostream>
#include <vector>
#include <string>
std::vector<std::string> dynamicSearch(const std::vector<std::string>& dataset, const std::string& query) {
std::vector<std::string> results;
for(const std::string& item: dataset) {
if(item.find(query) != std::string::npos) {
results.push_back(item);
}
}
return results;
}
int main() {
std::vector<std::string> programmingLanguages = {"C", "C++", "Java", "Python", "JavaScript", "Ruby", "Swift"};
std::string userQuery = "Jav";
std::vector<std::string> suggestions = dynamicSearch(programmingLanguages, userQuery);
std::cout << "Suggestions for query '" << userQuery << "': ";
for(const std::string& suggestion: suggestions) {
std::cout << suggestion << ";
}
std::cout << std::endl;
return 0;
}
この例では、 dynamicSearch
関数はプログラミング言語のデータセットとユーザー クエリを入力として受け取ります。 現在のクエリに基づいて提案を返します。 ユーザーが文字を入力すると、アルゴリズムによってデータセットがフィルタリングされ、リアルタイムの候補が表示されます。
注: 動的検索の実際の実装は、トライ構造や大規模なデータセットの効率的なインデックス作成などのテクニックを必要とし、より複雑になる可能性があります。