gpt4 book ai didi

search - 通配符仅搜索特定元素

转载 作者:行者123 更新时间:2023-12-02 11:47:24 25 4
gpt4 key购买 nike

我正在寻找一种在执行 search:search 时仅对特定元素进行通配符搜索的方法。具体来说,我可能有如下所示的文档:

<pdbe:person-envelope xmlns:pdbe="http://schemas.abbvienet.com/people-db/envelope">
<person xmlns="http://schemas.abbvienet.com/people-db/model">
<costcenter>
<code>0000601775</code>
<name>DISC-PLAT INFORM</name>
</costcenter>
<displayName>Tj Tang</displayName>
<upi>10025613</upi>
<firstName>
<preferred>TJ</preferred>
<given>Tze-John</given>
</firstName>
<lastName>
<preferred>Tang</preferred>
<given>Tang</given>
</lastName>
<title>Principal Research Scientist</title>
</person>
<pdbe:raw/>
</pdbe:person-envelope>

当搜索发生时,我希望搜索文本自动使用通配符,但仅限于某些元素,例如 displayName、firstName、lastName,但不适用于 upi 或代码。据我了解,我会在数据库中启用某些与通配符相关的索引,但随后我需要一个自定义查询解析器,将查询重写为多个 cts:element-query cts:element-value-query 语句,用于我想要进行通配符搜索的每个元素,或与最初解析的搜索查询进行“或”运算。或者,我可以创建字段约束,并重写查询以使用字段约束。

当用户输入简单的搜索查询时,是否有另一种方法可以在某些元素上使用通配符而不是其他元素进行条件搜索?即部分名字和姓氏“TJ Tan”,但当我搜索“时没有部分命中” 100256”。

最佳答案

您走在正确的道路上。让我们对“TS Tan”进行元素(或者字段)查询

cts:tokenize ,您可以将其分解(阅读 cs:tokenize - 它不仅仅是一个普通的标记生成器)。

然后我有“TS”和“Tan”

您可以执行诸如应用业务规则之类的操作,确定哪些单词应该是通配符,哪些不是,并构建适当的 cts 查询(可能是 and 语句中的单个单词查询 - 或接近查询 - 调整取决于您的需要) .

现在,通过标记化搜索短语,您还可以考虑,您可能会发现构建结果不依赖于通配符索引,而是依赖于元素单词词典 - 您可以在其中使用 word-matches 进行术语扩展。然后这些术语将被发送到查询。

有时我们会更进一步,将查询构建与 xdmp:estimate 结合起来,如果我们早期没有获得足够的结果,则可以减少查询的限制。

这个逻辑该放在哪里?您提到了 search:search,因此在这种情况下,我建议您将其打包到自定义约束中。

关于search - 通配符仅搜索特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37451242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com