私のシステムはstackoverflowに似ています。基本的に、投稿には複数のタグを付けることができ、クエリのタグが一致する投稿を見つける検索機能があります (すべてのタグが一致する必要があります)。
投稿のタグ付け/検索の問題を効率的に解決するアルゴリズム/データ構造があるのだろうか? 速度 (時間の複雑さ) の点で最も効率的なのはどれですか?
私のシステムはstackoverflowに似ています。基本的に、投稿には複数のタグを付けることができ、クエリのタグが一致する投稿を見つける検索機能があります (すべてのタグが一致する必要があります)。
投稿のタグ付け/検索の問題を効率的に解決するアルゴリズム/データ構造があるのだろうか? 速度 (時間の複雑さ) の点で最も効率的なのはどれですか?
これまで、私はこれに特化したDSを使用していません。実際、RDBMSでこれを実行したい場合は、Wordpressがtaxanomiesを使用してこれを実行する方法の詳細をお読みください。ほとんどの場合、個別のタグテーブルがあり、個別の投稿には複数のタグをリンクできます(キーを使用)。
もう1つの一般的なアプローチは、問題をファセット問題と見なすことです。フルテキストインデックスフレームワークを使用し、その上にファセットブラウジングを開発する必要があります。これは、このケースを説明するLucene/Solrの作成者からの優れた投稿です。ファセットブラウジングを使用すると、stackoverflowが行うことを表示できます。
algorithm × 21165
search × 8863
data-structures × 5867
tags × 2886
stackoverflow × 721
この種のデータを検索用に保存する最も時間効率の良い方法は、通常、転置インデックス内です。これは、最も一般的な検索エンジン/情報検索システムが構築されているものでもあります。
これを実際に実装するには、ApacheLuceneをご覧になることをお勧めします。