1

次のようなクエリを送信できるようにしたい:

car AND (color:blue AND price:[* TO 10000] AND model:Toyota)

次のような結果を取得します (これらが最も関連性の高い結果であると仮定します)。

{name : "An old car", color: "blue", price: "6000", model : "Toyota"}
{name : "An old car", color: "red", price: "5000", model : "Toyota"}
{name : "Another old car", color: "blue", price: "9000", model : "Volvo"}
{name : "Another old car", color: "white", price: "11000", model : "Toyota"}

つまり、あいまい検索ですが、文字列レベルではなく、「ファセット レベル」で検索します。すべての要件に一致する記事は常にトップに表示されますが、サブセットのみに一致する記事は引き続き取得されるように機能したいと考えています。

Solr やその他の検索フレームワークはこれをサポートしていますか? たとえば、クエリ ブースティングを使用してこれを達成できますか?

4

2 に答える 2

1

クエリを次のように変更することで実行できると思います(読みやすくするために改行を追加しました)。ブースト構文についてはわかりませんが:

(car AND (color:blue^0.9 OR color:[* TO *]^0.1) 
     AND (price:[* TO 10000]^0.9 OR price:[* TO *]^0.1) 
     AND (model:Toyota^0.9 OR model:[* TO *]^0.1))

編集:

このソリューションは、実装で意図したとおりに機能しているようです。優先プロパティの重みを追加しましたが。^1000 は、優先されないものに勝つのに十分な重みを与えるように見えました。

于 2013-03-04T12:18:40.553 に答える
0

たとえば管理フロントエンドで URL クエリを使用している場合、クエリは次のようになります。

q=car&fq=color:blue&fq=price:[* TO 10000]&fq=model:Toyota

または多分あなたの例ではそれは

q=*&fq=name:car&fq=color:blue&fq=price:[* TO 10000]&fq=model:Toyota

結果は、schema.xml で構成できる構成済みの論理演算子に依存します。デフォルトの演算子は AND です。こちらを参照してください。

スキーマのドキュメント

単一フィールドの場合、filterquery は Java の String.contains() 関数に似ています。

于 2013-03-05T20:02:58.393 に答える