我之前没有尝试使用cts:类似查询,似乎在max-terms选项中使用不同的数字会对结果产生很大的影响。
我没有更改数据库设置的任何选项,因此我使用的是默认数据库设置。
我注意到max-terms的默认值是16。 我使用了cts:distinct-terms来尝试了解cts:当我更改max-terms的数量时,类似查询会使用。
我原本以为我只需要在$节点中获取术语的数量(即空格上的标记化),然后我想也许我应该加倍,以考虑术语对。
这里有“经验法则”吗? (顺便说一句,我正在用3个不同的DB来做这个,其中片段数量分别为24M,131M和287M,所以我有很多片段可供类似查询工作......)
关于cts的第二个问题:特殊术语输出 - 空cts:术语是什么意思?
<cts:term id="4083217226504034818" val="504" score="1032192" confidence="0.453548" fitness="0" xmlns:cts="http://marklogic.com/cts"></cts:term>
很高兴知道这个“术语”是什么,因为它是列表中得分最高的词......
答案 0 :(得分:3)
cts:similar-query
的功能类似于OR查询。您为max-terms
配置的值越高,您可能获得的匹配就越多。如果您只获得前几项结果,则更多术语可能会提高这些结果的准确性。如果误报对您的用例很重要,那么更多的术语会在结果集的尾部添加更多噪声。
通常,cts:similar-query
的条款和结果与数据库中的内容以及您为函数提供的节点高度相关 - 因此很难提出规则它。为了控制误报,我有更好的结果从cts:distinctive-terms
生成我自己的查询。要获得更少,更相关的结果,您还可以尝试传递仅返回单词对的配置。最后,我认为您需要进行试验,看看哪种方法适用于您的用例和数据集。
答案 1 :(得分:1)
如果您将选项details
设置为true
,您将获得有关这些术语含义的一些信息。