我想知道我想要什么是可能使用搜索语法..例如:让我们假设3个文件
doc 1:
<seq>
<chain><name>PL-1</name></chain>
</seq>
doc 2:
<seq>
<chain><name>PL-1</name></chain>
<chain><name>PL-2</name></chain>
</seq>
doc 3:
<seq>
<chain><name>PL-1</name></chain>
<chain><name>PL-2</name></chain>
<chain><name>PL-3</name></chain>
</seq>
我想搜索包含链名称“PL-1”的文档。没有别的..所以对于这个搜索条件我只需要获得doc 1,如果我想搜索PL-1和PL-2,我应该只获得doc2
这可以用搜索语法吗?
答案 0 :(得分:1)
默认搜索语法使用减号(-
)作为启动令牌转换为否定查询,因此您可以使用:
xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
search:parse("PL-1 -PL-2 -PL-3")
这将返回第一个示例的查询,匹配doc 1:
<cts:and-query xmlns:cts="http://marklogic.com/cts">
<cts:word-query>
<cts:text xml:lang="en">PL-1</cts:text>
</cts:word-query>
<cts:not-query>
<cts:word-query>
<cts:text xml:lang="en">PL-2</cts:text>
</cts:word-query>
</cts:not-query>
<cts:not-query>
<cts:word-query>
<cts:text xml:lang="en">PL-3</cts:text>
</cts:word-query>
</cts:not-query>
</cts:and-query>
使用相同的方法,您可以为仅与doc 2匹配的查询创建一个字符串:
PL-1 PL-2 -PL-3