2015-11-01 91 views
4

当搜索字符串中存在像下划线(_)和%这样的字符时,结果计数和方面计数与搜索结果不匹配。方面和搜索的计数与搜索结果不同

我得到了一个正确的搜索结果,但结果数和方面数都超过了这个数。我正在使用搜索:解析并传递结构化cts:query作为参数。

什么可能是问题和它的决议,请建议。

回答

6

您的搜索结果正在过滤,而其他值不是。使用Search API时,默认行为是过滤搜索结果。这意味着它基本上首先使用索引获取候选结果集,然后检查并删除误报。分面和总结果数只能使用索引进行计算,因此它们不会被过滤。

有几种方法可以解决这个问题。最简单的是指定选项<search-option>unfiltered</search-option>,并且未经过滤的运行你的查询。然而,这意味着在方面和结果数量方面的任何不准确性也将反映在搜索结果中。

最准确的方法是配置您的索引和查询,以便仅使用索引返回正确的结果。这可能需要一些试验和错误。通常,您要确保使用也是文档或碎片根的searchable-expression。对于符号字符,请考虑在查询中添加exact选项并启用字位置索引。这可能是足以让它在你的情况下工作,但是,对于详细信息,关于这个主题,请参阅查询性能和优化指南:

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