おそらく、私が探しているものがわからないので、この質問のタイトルは多少奇妙かもしれません。複数のタグでデータセットを検索する
私はいくつかのデータを持っています。文字列と複数のタグが関連付けられています。今私は文字列で自分のデータを検索する機能を持っていたいと思います。
編集:問題は、文字列比較または部分 検索ではありません!問題は結果からデータ オブジェクトへの接続です。ここで
作品の例:
"Title1" tags: "genre1" "genre2" "actor1" "actor2"
"Title2" tags: "genre2" "actor2" "actor3"
"Title3" tags: "genre2" "genre3" "actor1" "actor3"
Search for "genre2" -> "Title1", "Title2", "Title3"
Search for "Title1" -> "Title1"
Serach for "actor1" -> "Title1", "Title3"
その他の例:
- のYouTube:動画を検索...
- アマゾン: "TV" が、 "TV" を検索タイトルに含まれる必要はありません。
唯一のことは、すべての可能性のリストを指し示すマルチマップです。次に、すべてのキーとタダで検索文字列を比較する必要があります。しかし、私は、私はリストの非常識な量を持っているでしょうので、これは良い解決策であると信じてすることはできません...
誰も私に私はこれを実装する方法を多分を探しています何のアイデアを与えることはできますか?私はQtでC++を使用します。 Qtが何らかの形で私を助けてくれるかどうかはわかりません。
編集:私はこのように一緒にすべてのキーワードを追加することができます。
"Title1 genre1 genre2 actor1 actor2"
"Title2 genre2 actor2 actor3"
"Title3 genre2 genre3 actor1 actor3"
は、データオブジェクトにこのキーでマップを作成します。次に、文字列検索を実行し、検索文字列がキーの部分文字列であるすべての文字列を取得するだけです。
これは良い解決策ですか?タイトルの試合に優先順位を付ける場合はどうすればよいですか?そのaは、データの多くは、またはあなたが別のコンピュータにデータを移行することが予想される場合は
実際のデータベースと考えましたか?おそらくsqlite? –
@RetiredNinjaはい、現時点では私が必要かどうかわかりません。 – Darkproduct
これを解決する最善の方法は 'suffix tree'または' suffix array'です。 'suffix tree'を使うと、葉の文字列に対応するすべてのタイトルのインデックスのリストを使用します。 – abdullah