3

Google App Engine のテキスト検索 API を使用して、ユーザーが単語フィールドを含むドキュメントを検索できるようにするプロジェクトに取り組んでいます。ドキュメントによると、「ドキュメント内の用語の頻度に基づいてスコアを割り当てる」MatchScorer を使用して並べ替えています。

ユーザーが「ビジネス プロモーション」などのクエリを入力すると、これを次のようなクエリ文字列に変換しますwords:business OR words:promo。これにより、「ビジネス」と「プロモーション」の両方の単語を含むドキュメントが返されてから、単語の 1 つだけを含むドキュメントが返されると予想していました (ドキュメントには、ドキュメント内の用語の頻度に基づいてスコアを割り当てると記載されているため)。ただし、両方を含むドキュメントの前に、単語の 1 つだけを含む結果がよく見られます。

RescoringMatchScorerを使用してクエリを実行しようとしましたが、このスコアラーを使用しても同じ問題が発生します。

AND 検索語と OR 検索語のクエリを別々に実行することを考えましたが、ユーザーが 2 つ以上の検索語を入力すると、多くのクエリが必要になります。たとえば、「高度なビジネス ソリューション」を検索した場合、すべてのベースをカバーするには次のようなクエリが必要です。

words:advanced AND words:business AND words:solutions
words:advanced AND words:business
words:advanced AND words:solutions
words:business AND words:solutions
words:advanced OR words:business OR words:solutions

関連性の低い結果の前に、より関連性の高い結果 (つまり、より多くの検索語の一致) を返す検索を実行する方法についてのヒントはありますか?

4

1 に答える 1

0

おそらく、「単語の頻度」というフレーズをどのように解釈するかによって異なります。あなたはそれを「私の検索用語がドキュメントにいくつ表示されているか」という意味に解釈していると思います。しかし、それは「検索用語が各ドキュメントに何回出現するか」を意味することもあり、実際、少なくとも私が行ったいくつかの簡単な実験によれば、後者が実際の動作のようです。

たとえば、「ビジネス」という単語が 20 回含まれ、「プロモーション」という単語がまったく含まれていないドキュメントは、「ビジネス」と「プロモーション」がそれぞれ 1 回しか含まれていないドキュメントよりもスコアが高くなります。それはあなたが見ている行動と一致していますか?

于 2014-04-11T18:26:14.133 に答える