简体   繁体   English

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

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

We have data in xml as follows 我们在xml中有如下数据

<person>
    <snm>Joisar</snm>
    <fnm>Manish</fnm>
    <init>Mr.</init>
</person>

Word query is as follows 单词查询如下

<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>

When we search for First Name OR Last name, it works fine & we get results 当我们搜索名字或姓氏时,它工作正常,我们得到结果

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

Now when user wants to search for full name ie "Joisar Manish", it does not show the results, as both are in separate elements. 现在,当用户想要搜索全名,即“Joisar Manish”时,它不显示结果,因为两者都在单独的元素中。 At least one way it should search ie Joisar Manish OR Manish Joisar 它至少应该搜索一种方式,即Joisar Manish或Manish Joisar

Can you please help me with how to write word query to make sure it works as expected ? 你能帮我解决一下如何编写单词查询以确保它按预期工作吗? or we need to go with different approach? 或者我们需要采用不同的方法?

There are two basic approaches here: 这里有两种基本方法:

  1. Is to search for each part of the name separately and AND them together, logically Joisar AND Manish . 是分别搜索姓名的各个部分,并AND它们一起,逻辑Joisar AND Manish
  2. The way you are thinking about it, as a phrase search. 你正在考虑它的方式,作为短语搜索。 Here, however, you need to do some reconfiguration of the database, because by default phrases break at element boundaries. 但是,在这里,您需要对数据库进行一些重新配置,因为默认情况下,短语会在元素边界处中断。 So you want to declare these low level elements as phrase-through elements. 因此,您希望将这些低级元素声明为phrase-through元素。 Then you do your search to the person element. 然后你搜索person元素。 That assumes the pieces are actually adjacent. 这假设碎片实际上是相邻的。

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

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