Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何在MarkLogic中包含子元素作为word查询的一部分_Xml_Search_Xquery_Marklogic - Fatal编程技术网

Xml 如何在MarkLogic中包含子元素作为word查询的一部分

Xml 如何在MarkLogic中包含子元素作为word查询的一部分,xml,search,xquery,marklogic,Xml,Search,Xquery,Marklogic,我们有如下xml格式的数据 <person> <snm>Joisar</snm> <fnm>Manish</fnm> <init>Mr.</init> </person> <options> <word> <element ns="" name="{$constants:surname}"/> <

我们有如下xml格式的数据

<person>
    <snm>Joisar</snm>
    <fnm>Manish</fnm>
    <init>Mr.</init>
</person>
<options>
    <word>
        <element ns="" name="{$constants:surname}"/>
        <element ns="" name="{$constants:foreName}"/>
        <element ns="" name="{$constants:initial}"/>
        <element ns="" name="{$constants:prefix}"/>
        <element ns="" name="{$constants:suffix}"/>
        <term-option>case-insensitive</term-option>
        <term-option>diacritic-insensitive</term-option>
        <term-option>punctuation-insensitive</term-option>
        <term-option>whitespace-insensitive</term-option>
    </word>
</options>
现在,当用户想要搜索全名,即“Joisar Manish”时,它不会显示结果,因为两者都在单独的元素中。至少有一种搜索方式,即Joisar-Manish或Manish-Joisar


你能帮我写一个word查询以确保它能正常工作吗?或者我们需要采用不同的方法?

这里有两种基本方法:

  • 是分别搜索名称的每个部分,然后将它们一起搜索,逻辑上搜索Joisar和Manish
  • 你对它的思考方式,作为一个短语搜索。然而,在这里,您需要重新配置数据库,因为默认情况下,短语在元素边界处断开。因此,您希望通过元素将这些低级元素声明为
    短语。然后搜索
    person
    元素。这假设两个片段实际上是相邻的
  • 感谢您的回复,“短语通过”元素工作了,并且工作正常。谢谢。
    search:search($SearchWord, $SearchOption, $Start, $pageLength)