我基本上希望 Solr 为我的搜索参数搜索多值字段的每条记录。请继续阅读我的示例:
我正在使用 Solr 来索引我的数据。我有与给定产品匹配的并行数组(以多值字段的形式)中的应用程序数据。请参阅以下示例,其中品牌、型号和年份是多值字段:
<-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,它会匹配上面的记录,但由于品牌、型号和年份数据是并行编码的,因此该产品实际上没有 2000 Acura Integra。Solr 匹配 make 字段中的 make、模型字段中的模型和 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 为我的搜索参数搜索多值字段的每条记录。这可能吗?有没有更好的方法来做我想做的事情?
谢谢