gpt4 book ai didi

java - Elasticsearch Java api - 选择查询以搜索混合有特殊字符的文本(John-son)

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:17 24 4
gpt4 key购买 nike

我的数据库集合中有两个用户,这些用户的名称是 johnjohn-son ,现在我尝试在数据库集合的所有字段中选择与我的搜索文本匹配的所有记录。例如,我的搜索文本是 john 那么我的查询是使用 elasticsearch java api

QueryBuilder queryBuilderForUserSearch = QueryBuilders.must(
QueryBuilders.fieldQuery("_all", "*" + q + "*"));

一切正常。但是,当我尝试使用 john-son 等特殊字 rune 本进行搜索时,它返回零记录。任何人都可以帮助我为什么会发生这种情况,并请提供对带有特殊字符的选择文本的查询。

最佳答案

您遇到的问题与此问题大致相同:Elasticsearch wildcard search on not_analyzed field

首先,您确实不想在查询中包含前导通配符。 Lucene 必须遍历索引字典中的每个术语才能找到术语。项数为 O(n),其成本极其昂贵。有关更多详细信息,请参阅本文:http://www.found.no/foundation/elasticsearch-from-the-bottom-up/

这里可能发生的情况是,john-son 通过 standard 分析器标记为 johnson。因此,字典中没有 john-son 术语可供您的通配符查询匹配。

关于java - Elasticsearch Java api - 选择查询以搜索混合有特殊字符的文本(John-son),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21330148/

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