xml - 如何在 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
您能帮我编写单词查询以确保它按预期工作吗?还是我们需要采用不同的方法?
解决方案
这里有两种基本方法:
- 就是把名字的每一部分分开搜索,
AND
然后合起来,合乎逻辑Joisar AND Manish
。 - 您考虑它的方式,作为短语搜索。但是,在这里,您需要对数据库进行一些重新配置,因为默认情况下,短语会在元素边界处中断。所以你想将这些低级元素声明为
phrase-through
元素。然后你对person
元素进行搜索。假设这些碎片实际上是相邻的。
推荐阅读
- java - Spring Boot Http Security 配置单元测试
- python - 使用python卸载windows安全补丁
- c# - 无需先解析,将 Excel 文件转换为 Json 字符串
- python - 用它们的标准等价物替换视觉上相同的python字符串中的有问题的字符
- c# - 让电梯上升?
- reactjs - 在 return() 函数中使用 for 循环在列表中显示数据
- python - don't understand this lambda expression with defaultdict
- ios - 存储对相机胶卷图像的引用 - Swift 4
- firebase-realtime-database - Firebase 安全规则和身份验证
- javascript - NEDB $and 运算符