2017-03-10 54 views
0

也許有人可以啓發我Solr如何匹配術語。所以我有一個名爲assignedBy的字符串屬性,並且我使用值「Aaron Mason」(不含引號)對此屬性進行查詢。 Solr返回比我預期更多的匹配,因爲術語「Mason」也匹配其他字段中包含單詞「Mason」的文檔。通過打開調試功能(來自Solr管理員),我看到Solr將查詢分解爲兩個屬性查詢 - assignBy的「aaron」和全文的文本(見下文)的「mason」。這是正確的行爲?我如何確保它僅找到與我指定的屬性相匹配的匹配項?謝謝。Solr多次搜索的結果不正確

"debug":{ "rawquerystring":"assignedBy:Aaron Mason", "querystring":"assignedBy:Aaron Mason", "parsedquery":"assignedBy:aaron _text_:mason", "parsedquery_toString":"assignedBy:aaron _text_:mason",

回答

2

是的你是對的。當您在解析查詢之後q=assignedBy:Aaron Mason (基於模式文件中的查詢標記化器)時,它看起來像 assignedBy:aaron_text_:mason

如果不指定字段名稱queryterm在默認字段(在solrconfig.xml文件中設置)中搜索,則可以在/select處理程序下查找<str name="df">text</str>。在你的情況下,它可能是_text_

因此,Solr搜索其索引並檢索所有具有字段assignedBy並帶有術語「Aaron」的所有文檔以及具有字段_text_並帶有術語「mason」的所有文檔的組合結果。

您可能已使用複製字段將某些字段值複製到文本字段。檢查它。

您可以使用dismax/edismax在那裏你可以指定字段中的所有你的條件來搜索 例如:

q=Aaron Mason&wt=json&debugQuery=on&defType=dismax&qf=assignedBy

這隻能找到比賽反對qf指定的字段「assignedBy」

+0

謝謝您的解釋和建議! –