基本的に、Solrに複数値フィールドの各レコードで検索パラメーターを検索してもらいたいと思います。例を読んでください。
Solrを使用してデータのインデックスを作成しています。特定の製品に一致する並列配列(複数値フィールドの形式)のアプリケーションデータがあります。次の例を参照してください。ここで、make、model、およびyearは複数値のフィールドです。
<-solr record start->
sku: 1234
make: acura, acura, acura
model: integra, rsx, rsx
year: 1997, 2004, 2000
engine: 3.4, 4.5, 4.5
<-solr record end->
フィルタクエリ(&fq =)を使用して選択範囲を絞り込んでいます。問題は、誰かが2000 Acura Integraを検索すると、上記のレコードと一致することですが、製造元、モデル、および年のデータが並行してエンコードされているため、この製品には実際には2000AcuraIntegraがありません。Solrは、makeフィールドのmake、modelフィールドのmodel、およびyearフィールドのyear(必要に応じて)を照合し、この結果を返します。私の並列処理は尊重していません。これまでのところ、私のクエリは次のようになります。
fq=make:"acura"&fq=model:"integra"&fq=year:2000 (I would normally escape URL characters when I POST to Solr, this is just an example)
したがって、私の解決策は、サマリーフィールドと呼ばれる別の多値フィールドを作成することでした。このフィールドでは、すべての製造元、モデル、年、およびその他のデータ(エンジンなど)をスペースで区切ってまとめます。複数の単語を含む用語が誤って検索パラメータと一致しないように、単語を引用符で囲む必要があります。上記の例は次のようになります。
<-solr record start->
sku: 1234
make: acura, acura, acura
model: integra, rsx, rsx
year: 1997, 2004, 2000
engine: 3.4, 4.5, 4.5
summary: "acura" "integra" "1997" "3.4", "acura" "rsx" "2004" "4.5", "acura" "rsx" "2000", "4.5"
<-solr record end->
次に、クエリに次を追加します。
summary:(""acura" AND "integra" AND "2000")
これをクエリに追加すると、要約フィールドにacura integra 2000がないため、このレコードは表示されなくなると思います。ただし、これは機能しません。レコードはまだ出ています。私は困惑しています。誰かがこの問題の解決策を持っていますか?それは何日も私を殺してきました。
基本的に、Solrに複数値フィールドの各レコードで検索パラメーターを検索してもらいたいのですが、これは可能ですか?私がやろうとしていることをするためのより良い方法はありますか?
ありがとう