繁体   English   中英

如何在MarkLogic中将子元素包含为单词查询的一部分

[英]How to include sub element as a part of word query in MarkLogic

我们在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>

当我们搜索名字或姓氏时,它工作正常,我们得到结果

search:search($SearchWord, $SearchOption, $Start, $pageLength)

现在,当用户想要搜索全名,即“Joisar Manish”时,它不显示结果,因为两者都在单独的元素中。 它至少应该搜索一种方式,即Joisar Manish或Manish Joisar

你能帮我解决一下如何编写单词查询以确保它按预期工作吗? 或者我们需要采用不同的方法?

这里有两种基本方法:

  1. 是分别搜索姓名的各个部分,并AND它们一起,逻辑Joisar AND Manish
  2. 你正在考虑它的方式,作为短语搜索。 但是,在这里,您需要对数据库进行一些重新配置,因为默认情况下,短语会在元素边界处中断。 因此,您希望将这些低级元素声明为phrase-through元素。 然后你搜索person元素。 这假设碎片实际上是相邻的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM