gpt4 book ai didi

java - Elasticsearch 搜索查询选择

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

我想使用elasticSearch 搜索字词(GoogleEarth 或googleearch)。
现在,如果我尝试搜索查询“Google”,如果没有 NGram 或 EdgeNGram,我将无法获得任何结果。
我不想使用 nGram 因为它们会得到很多结果。所以现在我只使用Bool Query + multimatchquery。在这种情况下,我无法通过部分单词得到结果。我希望我可以搜索“Google Earth”或“Google”或“Earth”来获取GoogleEarth。我怎样才能得到这个?

现在我只需使用查询“GoogleEarth”即可获得正确的结果。我想搜索术语(如果包含)。

 .setQuery(QueryBuilders.boolQuery().should(QueryBuilders.multiMatchQuery(query,
'title','name','tag')))

更新

我尝试根据完全匹配来搜索术语。如果我搜索“google”,我想得到“google***”“googleearth”等等。我知道如果我使用 edgeNGram 或 nGram,我可能会得到较少的相关结果。所以如果可能的话,我不想使用nGram或edgeNGram。你有什么想法?

最佳答案

我认为您需要定义一个自定义分析器来根据驼峰式大小写对单词进行标记 - 即“GoogleEarth”需要标记为“Google”和“Earth”部分。

请参阅 http://www.elasticsearch.org/guide/reference/index-modules/analysis/pattern-analyzer/camelcase tokenizer 部分

关于java - Elasticsearch 搜索查询选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17849777/

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