0

SOLR 検索の関連性について、SME からのルールがあります。こんなふうになります。

"XX"、"YY"、または "ZZ" という単語がユーザーの検索語句に含まれている場合、結果の document_type "MMMM" を大幅にブーストします。(ただし、その場合のみ、ドキュメント自体に重みを付けることができないと思います。)

指定された用語「XX」などの存在をチェックし、document_type「MMMM」を大幅にブーストする事前構築済みクエリにそれらをプラグインする「クエリプリプロセッサ」を構築することを想像できます。

それは私には少し不格好に感じます。これをコードで実行し、2 つのルールの用語が検索に含まれる「結合」状況を処理することは、私が維持したいことのようには思えません。

これを行うためにSOLRを活用する方法があるかどうか疑問に思っていますか? 最初に頭に浮かぶのは、データを前処理してSOLRに入れるときに、特定の検索用語「XX」などを任意のdocument_type「MMMM」に入れることです。

それらをドキュメントのテキストに放り込むだけでは、おそらく重みがそれほど変わることはありません-特にその用語がそのdocument_typeの一部ではない他のドキュメントにある場合-そして、それはすべてのドキュメントの「important_abbreviations」フィールドとすべてのクエリにその一般的なフィールドのブーストを含める「標準的な」方法。クエリを除いて、ドキュメント内の特定のフィールドをブーストする方法を見た覚えがないからです。

他の誰かがこの問題を解決したかどうか疑問に思っています。もしそうなら、どのように - これらは両方とも私には少し不格好に感じるからです。

4

1 に答える 1

0

考えられる答えの 1 つを試す: お気軽に批評、アドバイス、または警告してください。

(「略語」フィールドが同義語のように感じられることは承知しています。これにアプローチするために同義語がより良い方法であると思われる場合は、コメントしてください。)

ステップ 1: すべてのコレクション ドキュメントの SOLR で「略語」多値フィールドを作成します。

ステップ 2: SOLR に送信する solrInputDocument を作成するときに、「MMMM」タイプのすべてのドキュメントに「XX」、「YY」、「ZZ」を追加します。

ステップ 3: ステップ 2 で略語を追加するときに「略語」フィールドをブーストして、結果の xml が次のようになるようにします。

<field name="abbreviation" boost="5.0">myXXAbbreviationGoesHere</field>

[懸念事項: タイプが「略語」の一部のフィールドをブーストし、他のフィールドをブーストできませんか? つまり、SOLR はフィールド ブースト値を尊重し、正しく計算しますか? あるドキュメントでは "2" で、別のドキュメントでは "5" で、3 番目のドキュメントではブーストがありませんか?]

ステップ 4: copyField を実行し、「略語」をデフォルトの「テキスト」検索フィールドにドロップします。[これはおそらく私のフィールド固有の重み付けを失いますよね? -- したがって、以下の 5 または 6 です。]

ステップ 5: または - すべての着信検索で略語フィールドで直接検索を強制する要求ハンドラーを追加します。これについては完全にはわかりませんが、このスタックオーバーフローの質問からアイデアを得ました: Solr - クエリが特別なフィールドで見つかった場合の結果のブースト

ステップ 6: または - SOLR に送信する前に、UI に入力されたすべてのクエリに「略語」を検索するためのクエリ テキストを追加します。

[この場合、この 1 つのクエリでデフォルト フィールドと「略語」フィールドを検索します。それは可能だと思いますが、まだクエリを作成しようとしていません。コメント大歓迎です。】

于 2016-01-08T18:18:52.813 に答える