gpt4 book ai didi

java - 在elasticsearch查询中配置搜索词的标记化

转载 作者:行者123 更新时间:2023-12-01 11:11:18 27 4
gpt4 key购买 nike

我正在使用针对多个指定字段的匹配查询对elasticsearch (1.7) 进行一般搜索。这是在一个 Java 应用程序中完成的,其中有一个框用于输入搜索词。允许使用各种搜索选项(例如,用引号包围短语以查找阶段而不是组成词)。这意味着我正在进行完整的测试搜索。

一切都很好,只是我的帐户引用中有正斜杠,并且对帐户引用的搜索会产生数千个结果。如果我用引号括住帐户引用,我就会得到我想要的结果。我假设 AC/1234/A01 的帐户引用正在搜索 [AC OR 1234 OR A01]。最初我认为这是一个正则表达式问题,但我认为不是。

我不久前提出了一个类似的问题,我认为有效的一个建议是将“analyzer”:“keyword”添加到查询中(在我的代码中

queryStringQueryBuilder.analyzer("keyword")

)。

这样做的问题是,搜索的许多其他字段都不是关键字,并且它阻止了许多灵活的搜索选项的工作(区分大小写等)。我认为这已经成为文本搜索中完全匹配的东西。

我已经以错误的方式看待这个问题有一段时间了,正如我所见,我无法在索引中甚至在一般分析器设置中修复它,即使帐户引用字段已被完美标记和分析根据我的要求,搜索仍将搜索 [AC OR 1234 OR A01] 的所有其他字段。

有没有办法将搜索查询配置为不在正斜杠上拆分帐号?如果可以只用空格分割,我可以测试忽略所有标点符号,尽管我不想做出如此彻底的改变......

所以我想我要问的是是否有另一个内置分析器仍然可以进行全文搜索,但不会使用标点符号分割搜索词?如果不是,我可以使用自定义分析器来完成此操作(而不将其应用于索引本身?)

谢谢。

最佳答案

最简单的方法是将 / 替换为某个字符,该字符不会导致单词被分成两个标记,但不会干扰您的其他术语( _.' 应该可以工作)或使用 mapping char filter 完全删除 / 。这里有一个类似的例子https://stackoverflow.com/a/23640832/783043

关于java - 在elasticsearch查询中配置搜索词的标记化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334771/

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