[英]excluding term from results in solr query
我是新來的solr。 我對使用q
還是fq
感到困惑。 假設我有一些領域
有索引的Fileds是state
, title
, processed_title
, description
我想要結果
boiler keyword (all matches) in state delhi and also boiler keyword (exclude repair) in kerala
我認為一個解決方案
q=((boiler AND state:delhi) OR (boiler AND -repair AND state:kerala))
其他解決方案可能是
q=boiler&fq=(state:gujarat OR (state:kerala AND -processed_title:repair -title:repair -description:repair))
我必須在python中編寫json interafe進行查詢。 JSON可能看起來像(下面的字典只是一個例子)
{ q: 'boiler', filter: { state: kerala, price: [10 TO 100] } }
我的問題是:
q
或fq
更好地同時使用q
和fq
來編寫所有內容?是否有任何方法? 我正在使用solr 4.10。
謝謝
最好同時使用q和fq。 您將用於過濾文檔的內容放入fq中(結果是二進制的,文檔是輸入還是輸出),然后輸入q您要搜索的內容(這是漸進的,一個文檔可以匹配所有關鍵字,而另一個則可以匹配所有關鍵字一個僅匹配一個。如果可以將所有內容都放在fq中,則這樣做,q = *:*完全可以)。
不同之處在於:
關於json api問題,我不太了解您的意思。
一個好的經驗法則是,如果您的字段具有一組固定的值,請使用fq。 在您的情況下,狀態應為fq。 q用於計算solr分數。 分數越高意味着比賽越好。 您可以在這里閱讀更多內容。
fq不用於計算分數。 SOLR中的文檔要么具有喀拉拉邦狀態,要么沒有。
假設您的系統中有三個文檔。
doc1: {'title':'idli idli idli','state':['kerala','karnataka']}
doc2: {'title':'idli','state':['kerala']}
doc3: {'title':'paneer','state':['punjab']}
查詢idli和狀態喀拉拉邦,您將使用
q=idli&fq=kerala
這有點簡單,但是Solr將為doc1返回更高的分數,因為它比單詞doc2具有更多的單詞idli實例。 fq不會(也不應該)影響得分。 一個州有idli或沒有
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.