我试图了解element word positions
索引设置的影响.请参阅以下xquery,它返回简单element-word-query
搜索的计划:
xdmp:plan(cts:search(doc(),
cts:and-query(
cts:element-word-query(xs:QName("name"), "element word position")
),
("unfiltered")
))
Run Code Online (Sandbox Code Playgroud)
并且final-plan
如果索引没有被激活(还原形式,以节省空间):
<qry:and-query>
<qry:term-query>element(name),pair(word("element"),word("word"))</qry:term-query>
<qry:term-query>element(name),pair(word("word"),word("position"))</qry:term-query>
<qry:term-query>word("element")</qry:term-query>
<qry:term-query>word("word")</qry:term-query>
<qry:term-query>word("position")</qry:term-query>
</qry:and-query>
Run Code Online (Sandbox Code Playgroud)
索引激活后的查询计划(word-positions
以及element word positions
):
<qry:and-query>
<qry:term-query>element(name),pair(word("element"),word("word"))</qry:term-query>
<qry:term-query>element(name),pair(word("word"),word("position"))</qry:term-query>
<qry:element-query>
element(name)
<qry:word-query>
<qry:KP pos="0">word("element")</qry:KP>
<qry:KP pos="1">word("word")</qry:KP>
<qry:KP pos="2">word("position")</qry:KP>
</qry:word-query>
</qry:element-query>
</qry:and-query>
Run Code Online (Sandbox Code Playgroud)
所以我假设,因为term-query
生成的数量较少,所得到的候选片段id计数将会更小,因此索引分辨率的交集更快.除此之外,我真的很想了解一下如何element-query
在幕后工作.所以我有几个问题:
element word positions
激活了索引中保存了哪些附加信息?element-query
执行?我看到一个简单的term-query
返回短线重要的倒排表,但我不知道如何element-query
与word-query
作为"子查询"是evalutated.编辑:添加了一张图片,可视化我对索引在启用元素字位置时的外观的理解.(有关详细信息,请参阅mholstege的答案评论)
marklogic ×1