Java 优化Solr搜索,获得精确匹配?
下午的伙计们 对,我正在为一个使用Solr的网站构建一个相当复杂的搜索系统,尽管这个问题很简单,但我认为 我有两个搜索条件,位置和类型。我希望返回与类型完全匹配的结果(字母对字母,没有例外),以及类似的位置 我当前的搜索查询如下 ../select/?q=位置:N1类型:蓝色&行=100&fl=*,分数&调试查询=true 它首先返回所有匹配N1的blue类型,然后返回匹配N1的任何类型,这与我所追求的相反。这两个字段在Solr架构中都设置为textgen 有什么建议吗Java 优化Solr搜索,获得精确匹配?,java,solr,lucene,Java,Solr,Lucene,下午的伙计们 对,我正在为一个使用Solr的网站构建一个相当复杂的搜索系统,尽管这个问题很简单,但我认为 我有两个搜索条件,位置和类型。我希望返回与类型完全匹配的结果(字母对字母,没有例外),以及类似的位置 我当前的搜索查询如下 ../select/?q=位置:N1类型:蓝色&行=100&fl=*,分数&调试查询=true 它首先返回所有匹配N1的blue类型,然后返回匹配N1的任何类型,这与我所追求的相反。这两个字段在Solr架构中都设置为textgen 有什么建议吗 Cheers gang默
Cheers gang默认情况下,Solr使用OR运算符组合查询词。如果只希望结果为
位置:N1和类型:蓝色
,而不是位置:N1或类型:蓝色
,则需要更改运算符。改变这一点的最简单方法是在查询时向URL添加一个附加参数q.op=和
:
../select/?q=location:N1 type:blue&rows=100&fl=*,score&debugQuery=true&q.op=AND
您还可以通过编辑schema.xml文件来更改所有查询的此选项;寻找
<solrQueryParser defaultOperator="OR"/>
默认情况下,Solr使用OR运算符组合查询术语。如果只希望结果为
位置:N1和类型:蓝色
,而不是位置:N1或类型:蓝色
,则需要更改运算符。改变这一点的最简单方法是在查询时向URL添加一个附加参数q.op=和
:
../select/?q=location:N1 type:blue&rows=100&fl=*,score&debugQuery=true&q.op=AND
您还可以通过编辑schema.xml文件来更改所有查询的此选项;寻找
<solrQueryParser defaultOperator="OR"/>
如果您只想强制使用“type”子句,则可以保留或作为默认运算符,并在“type”子句前面使用编码的“+”符号:
./select/?q=location:N1 %2Btype:blue&rows=100&fl=*,score&debugQuery=true
如果您只想强制使用“type”子句,则可以保留或作为默认运算符,并在“type”子句前面使用编码的“+”符号:
./select/?q=location:N1 %2Btype:blue&rows=100&fl=*,score&debugQuery=true
干杯,伙计,一些非常有用的提示,非常感谢:)干杯,伙计,一些非常有用的提示,非常感谢:)