LinkedIn のような検索エンジン プロジェクトで、すべてに 1 つの検索ボックス モデルを提供することを目指しています。
類推を使用して自分の問題を表現しようとしました。
各結果が記事であり、著者、トピック、会議 (出版物の場合)、ホストされた Web サイトなどの複数の次元があると仮定しましょう。
いくつかのサンプル クエリ:
「authorXYZ による IEEE での情報検索論文」: 3 つの次元 {topic, conf-name, authorname}
「デザインパターンに関するauthoABCによるACMペーパー」:3次元{conf-name、author、topic}
「javaranch でのマルチスレッド プログラミング」: 2 つの次元 {トピック、ウェブサイト}
データベースから最終結果を取得する前に、大きなクエリでこれらのディメンションと対応するキーワードを特定する必要があります。
ポイント
- すべてのディメンションのすべての可能な値にアクセスできます。たとえば、私はすべての会議名、著者名などを持っています.
- ディメンション間での用語の重複はほとんどありません。
私のアプローチ(素朴)
Lucene を使用して、「dimension」と呼ばれる専用フィールドと実際の値を持つ別のフィールドを使用して、各ディメンションのすべてのキーワードにインデックスを付けます。元:
1) {名前:IEEE、次元:会議}など
2) {name:ooad, ディメンション:topic} など
3) {name:xyz, dimension:author} など
- クエリをそのまま使用してインデックスを検索します。
- 結果をある程度反復し、新しい次元の最初のドキュメントを認識します。
問題
- 結果セットからのディメンションの認識を停止するタイミングがわからない。たとえば、クエリには 2 つのディメンションしか含まれていなくても、結果は 3 つのディメンションに一致する場合があります。
- スペル チェックも含めたい場合は、より複雑になり、結果の精度が低下する傾向があります。
論文、記事への参照、または問題のドメインを説明する適切な用語の指摘などは、確かに役立ちます。
どんなガイダンスでも大歓迎です。