0
在我的公司,我們有一個測試字符串,我們用它來確保逃避問題在我們的許多組件正確處理:Solr的增加不必要的MatchAllDocsQuery,我不知道爲什麼
!"§$%&/()?ß><öä€ü\ÖÄÄÜ#'
當我添加一個文件以Solr爲標題,一切都很好。 我現在嘗試用相同的字符串來查詢該文檔,但與所有的特殊查詢參數轉義(see here for details):
!\"§$%&\/\(\)\?ß><öä€ü\\ÖÄÄÜ#'
出人意料的是,在我的索引匹配該查詢的所有文件!
我可以在調試輸出中看到(見下文),Solr在我的實際查詢後添加了一個MatchAllDocsQuery。這就是爲什麼所有文件都符合,但最大的問題是:
爲什麼Solr添加了匹配所有查詢?這對我沒有任何意義。有趣的是,當我刪除其中一個轉義反斜槓(例如雙引號之前的第一個反斜槓)時,查詢就像一個魅力,只能找到我的一個預期文檔。無論出於何種原因,Solr都不會再添加該match_all查詢。
!"§$%&\/\(\)\?ß><öä€ü\\ÖÄÄÜ#'
任何想法?
調試信息:
"rawquerystring": "!\\\"§$%&\\/\\(\\)\\?ß><öä€ü\\\\ÖÄÄÜ#'",
"querystring": "!\\\"§$%&\\/\\(\\)\\?ß><öä€ü\\\\ÖÄÄÜ#'",
"parsedquery": "(+(-DisjunctionMaxQuery((((de_all:ss de_all:oa de_all:u >de_all:oaau)~4) | ((en_all:ß en_all:öä en_all:ü en_all:öääü)~4) | string_all:\"§$%&/()?ss><oa€u\\oaau#')) +MatchAllDocsQuery(*:*)))/no_coord",
"parsedquery_toString": "+(-(((de_all:ss de_all:oa de_all:u de_all:oaau)~4) | ((en_all:ß en_all:öä en_all:ü en_all:öääü)~4) | string_all:\"§$%&/()?ss><oa€u\\oaau#') +*:*)"
請求處理程序:
<requestHandler name="/custom" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">none</str>
<str name="wt">json</str>
<str name="defType">edismax</str>
<str name="qf">de_all^1 en_all^1 string_all^1</str>
<str name="fl">id,score</str>
<str name="indent">false</str>
</lst>
</requestHandler>
如果您需要任何其他信息,請讓我知道!