gpt4 book ai didi

full-text-search - 忽略 cts :search 中的元素

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

我有一些具有如下结构的 xml 文档:

<root>
<intro>...</intro>
...
<body>
<p>..................
some text CO<sub>2</sub>
.................. </p>
</body>
</root>

现在我想搜索所有包含短语CO2的结果,并且还想在搜索结果中获得上述类型的结果。为此,我正在使用此查询 -

cts:search 
(fn:collection ("urn:iddn:collections:searchable"),
cts:element-query
(
fn:QName("http://iddn.icis.com/ns/fields","body"),
cts:word-query
(
"CO2",
("case-insensitive","diacritic-sensitive","punctuation-insensitive",
"whitespace-sensitive","unstemmed","unwildcarded","lang=en"),
1
)
)
,
("unfiltered", "score-logtfidf"),
0.0)

但是使用这个我无法通过 CO<sub>2</sub> 获取文档.我只使用简单的短语 CO2 获取数据.

如果我将搜索短语替换为 CO 2然后我只能用 CO<sub>2</sub> 获取文档而不是 CO2

我想获得 CO<sub>2</sub> 的组合数据和 CO2作为搜索结果。

那么我可以忽略<sub>吗?通过任何方式,或者是否有任何其他方式来解决这个问题?

最佳答案

这里的问题是标记化。 “CO2”是一个单词标记。 CO2,即使有短语通过,也是两个词标记的短语:“CO”和“2”。正如“blackbird”不匹配“black bird”一样,“CO2”也不匹配“CO 2”。 phrase-through 设置只是意味着我们愿意寻找跨越 元素边界的短语。

您不能将 CO2 拼接成一个标记,但您可以使用自定义标记化覆盖将“CO2”拆分为两个标记。定义一个字段并将数字的覆盖定义为“符号”。这将使每个数字成为自己的标记,并将在该字段的上下文中将“CO2”分解为两个标记。然后,您需要将词查询替换为字段词查询。

您可能不希望它应用于文档中的任何地方,因此您最好在文档中围绕这些类型的化学短语添加标记。一般字段和特别是标记化覆盖将以性能成本为代价。字段的内容完全单独索引,因此索引更大,标记化覆盖意味着我们也必须在摄取和查询时重新标记。这会稍微减慢速度(不会很多)。

关于full-text-search - 忽略 cts :search 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33536381/

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