2010-04-30 76 views
1

下午CHAPS,提炼Solr搜索,获得精确匹配?

权,我构建一个相当复杂的(我反正)搜索系统使用Solr的网站,虽然这个问题很简单,我认为......

我有两个搜索标准,地点和类型。我想要返回完全匹配的结果以输入(字母转换为字母,无例外)以及类似位置。

我目前的搜索查询是如下

../select/?q=location:N1类型:蓝色&行= 100 & FL = *,得分& debugQuery =真

首先返回匹配N1的所有类型的蓝色,但是然后返回任何匹配N1的类型,这与我之后的相反。这两个字段在Solr模式中都设置为textgen。

任何指针?

干杯帮

回答

2

如果你只是想有“型”条款是强制性的,你可以保持OR作为默认操作,并在“类型”的规定前使用编码的“+”符号:

./select/?q=location:N1 %2Btype:blue&rows=100&fl=*,score&debugQuery=true 
+0

工作非常好,感谢帕斯卡尔! – Tom 2010-05-04 08:16:25

4

默认情况下,Solr使用OR运算符来组合查询条件。如果您只想要结果location:N1 AND type:blue而不是location:N1 OR type:blue,则需要更改操作员。改变这种最简单的方法是通过增加一个额外的参数q.op=AND到URL查询时:

../select/?q=location:N1 type:blue&rows=100&fl=*,score&debugQuery=true&q.op=AND 

你也可以改变这个由编辑Schema.xml文件的所有查询;寻找

<solrQueryParser defaultOperator="OR"/> 

,并更改为

<solrQueryParser defaultOperator="AND"/> 

您可能还需要到现场型的type场的改变的东西,没有标记化,string例如。这将确保该字段上的匹配是确切的。

<field name="type" type="string" indexed="true" stored="true"/> 
+0

干杯好友,一些非常有用的提示,非常感谢:) – Tom 2010-05-04 08:16:49