2010-04-30 99 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