2015-11-01 92 views
4

當搜索字符串中存在像下劃線(_)和%這樣的字符時,結果計數和方面計數與搜索結果不匹配。方面和搜索的計數與搜索結果不同

我得到了一個正確的搜索結果,但結果數和方面數都超過了這個數。我正在使用搜索:解析並傳遞結構化cts:query作爲參數。

什麼可能是問題和它的決議,請建議。

回答

6

您的搜索結果正在過濾,而其他值不是。使用Search API時,默認行爲是過濾搜索結果。這意味着它基本上首先使用索引獲取候選結果集,然後檢查並刪除誤報。分面和總結果數只能使用索引進行計算,因此它們不會被過濾。

有幾種方法可以解決這個問題。最簡單的是指定選項<search-option>unfiltered</search-option>,並且未經過濾的運行你的查詢。然而,這意味着在方面和結果數量方面的任何不準確性也將反映在搜索結果中。

最準確的方法是配置您的索引和查詢,以便僅使用索引返回正確的結果。這可能需要一些試驗和錯誤。通常,您要確保使用也是文檔或碎片根的searchable-expression。對於符號字符,請考慮在查詢中添加exact選項並啓用字位置索引。這可能是足以讓它在你的情況下工作,但是,對於詳細信息,關於這個主題,請參閱查詢性能和優化指南:

https://docs.marklogic.com/guide/performance/unfiltered