12

私がこれらのフィールド宣言を持っているとしましょう:

<field name="Title" type="text_general" stored="true" multiValued="false" /> 
<field name="Body" type="text_general" stored="true" multiValued="false" /> 

「タイトル」にインデックスを付けるときは、ブーストを5に設定します。つまり、「タイトル」フィールドの単語は通常の5倍としてカウントされます。

それから私はこれをします:

<copyField source="Title" dest="SearchText"/>
<copyField source="Body" dest="SearchText"/>

そこで、両方のフィールドを「SearchText」という別のフィールドにコピーしました。

「SearchText」を検索すると、「Title」フィールドの用語はまだ5倍ブーストされていますか?それとも彼らはコピーでそれを失いますか?copyFieldを実行すると、すべてのフィールドのブーストが「平準化」されますか?

4

3 に答える 3

11

読んだ後、ブーストが取り除かれると思います。私たちの解決策はこれを行うことでした:

SearchText、SearchText2、SearchText3、および SearchText4 の 4 つのフィールドを作成しました。すべてを SearchText にコピーし、一部を SearchText2 にコピーし、一部を SearchText3 にコピーし、非常に重要なものだけを SearchText4 にコピーします。

次に、「qf」パラメータは次のようになります。

SearchText, SearchText2^3, SearchText3^10, SearchText4^100

そのため、クエリ時にフィールドを none、3、10、および 100 ずつ増やしています。

見栄えはよくありませんが、うまく機能し、インデックスを再作成せずにブーストを調整できます。

また、ここには抽象化レイヤーがあります。たとえば、SearchText2 に何かを配置することで、「これは重要です」と言っていますが、クエリ時まで (数値ブーストに関して) 重要性を定義していません。したがって、copyField は抽象化であり、実装の「qf」パラメーターです。

于 2012-12-19T15:18:07.983 に答える
0

私の知る限り、ブーストはフィールドごとに行われます。したがって、「タイトル」フィールドにブーストを適用した場合、「SearchText」フィールドには同じブーストがありません。一致をブーストするには、「SearchText」フィールドに個別のブーストを与える必要があります。

于 2012-12-18T04:03:58.880 に答える