簡體   English   中英

Solr 帶空格的查詢,帶查詢和操作

[英]Solr query with white spaces and with query and operation

我正在我的項目中開發一個搜索解決方案,除了一種情況外,一切正常。 搜索查詢操作是 AND (q.op=AND),當我搜索 ex: 40486 52P.57時它沒有給出任何結果(這里的查詢是在 java 中准備的),但是當我在solr 管理面板它給出了正確的結果。 在我的 java 代碼中,我是 escaping 搜索查詢,因此查詢像q: 40486\\ 52P.57一樣傳遞給 solr ,但是當我在 solr 管理員中執行它時,它就像q: 40486 52P.57

注意:上述搜索查詢中的兩個詞屬於兩個不同的領域。

我注意到的另一件事是,如果搜索查詢中的單詞屬於同一個字段,那么結果會很好,沒有任何問題,例如: 40486 67 ,其中兩個單詞屬於同一個字段,而來自我的 java 代碼的查詢是q: 40486\\ 67和 solr admin 是q: 40486 67但在這兩種情況下它都工作正常。

我在這里看不到任何問題,有人可以幫我解決這個問題嗎?

更新

我找到了它不起作用的根本原因。 問題是與 escaping 的空間。 實際上我正在使用qf中的各個字段來搜索 100% 匹配,在這種情況下我的意思是mm=100 所以 escaping 空間將使查詢為q: 40486\\ 52P.57並且沒有給出任何結果,但是如果我使用 multifield 和其中的所有可搜索字段那么即使查詢是q: 40486\\ 52P.57它也會給出結果q: 40486\\ 52P.57 solr 中的 edismax 是否有限制? 有人可以幫助我如何在不創建多字段的情況下解決這個問題嗎? 我的期望是即使在 escaping 空間使用qf參數中的各個字段之后它也應該工作。

示例索引:

{
productNumber : 40486754,
productShot : 52P.57 UTM, 
description : something,
general_search {
  40486754,
  52P.57 UTM,
  something
}
},
{
productNumber : 12345,
productShot : 52P.57 ABC, 
description : xzy,
general_search {
  12345,
  52P.57 ABC,
  xzy
}
}

示例查詢:查詢 1:

qt=/select&q.op=AND&defType=edismax&q=40486\+52P.57&qf=productNumber+productShot+description

查詢 2:

qt=/select&q.op=AND&defType=edismax&q=40486 52P.57&qf=productNumber+productShot+description

查詢 3:

qt=/select&q.op=AND&defType=edismax&q=40486\+52P.57&qf=general_search

在上面的查詢中,查詢 2 和 3 有效但查詢 1 無效

問題出在空白處的 escaping。 當我轉義空格時,它被視為單個單詞“40486 52P.57”,而當空格未轉義時,它被視為兩個不同的單詞 40486 和 52P.57,因此它工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM