特定のフィールドを持つsolrスキーマがあります:
<field name="id" type="integer" indexed="true" stored="true" required="true" multiValued="false" />
<field name="title" type="text" indexed="true" stored="true" multiValued="false" />
<field name="note" type="text" indexed="true" stored="true" multiValued="false" />
今、クエリで検索しています(%sは私の検索文字列です)
q={!boost b=recip(ms(NOW,date),3.16e-11,1,1)}%s&defType=dismax&qf=title^100 note
レコードごとにタグのようなものが必要です。
<field name="tags" type="string" indexed="true" stored="false" multiValued="true" />
単語の 1 つが「タグ」フィールドの値の 1 つと一致するレコードの結果を後押しするにはどうすればよいですか?
アップデート
{!boost b=recip(ms(NOW,date),3.16e-11,1,1)} を q から削除すると、クエリが希望どおりに機能することがわかりました。しかし、これではそうではありません
更新 2
さっきわかった、さっきの「わかった」は完全に間違っていた。一部の検索文字列では機能しますが、うまく機能しません。私はこの振る舞いが必要だと思います:
「タイトル」と「メモ」フィールドでは「AND」で検索する必要がありますが、「タグ」フィールドでは「OR」で検索する必要があります。どうすればdismaxでそれを行うことができますか?
{!boost} とクエリ関数を試してみましたが、良い結果は得られませんでした