gpt4 book ai didi

java - 用于精确搜索的 Hibernate 搜索和 Elastic 搜索分析器

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

我在实体字段上方有 StandardAnalyser

 @Field(name = "myField", index = Index.YES, analyze = Analyze.YES, analyzer = @Analyzer(impl = StandardAnalyzer.class)),

但我想知道如何才能:

1) 按以下字词搜索:我喜欢香蕉 -> ["I", "like", "bananas"](我的分析器目前允许我这样做)

2)按精确输入搜索:“我喜欢香蕉” ->“我喜欢香蕉”(StandardAnalyser 不允许,合适的更改是 impl = KeywordAnalyser)

我应该改变我的分析器还是在java代码中,根据输入(如果它以双引号开始和结束)改变搜索方式?

问候

最佳答案

也许您想要短语查询?短语查询查找一系列标记,而不仅仅是一个标记。

Query luceneQuery = queryBuilder.phrase()
.onField("myField")
.sentence("I like bananas")
.createQuery();

参见https://docs.jboss.org/hibernate/search/5.11/reference/en-US/html_single/#_phrase_queries

然而,短语查询仍然有点“模糊”,因为仍然涉及分析器:大小写将被忽略等。它只是寻找一系列(分析的)标记。

如果您确实需要精确搜索,包括区分大小写,您可以简单地声明两个字段:

 @Field(name = "myField", index = Index.YES, analyze = Analyze.YES, analyzer = @Analyzer(impl = StandardAnalyzer.class))
@Field(name = "myField_exact", index = Index.YES, analyze = Analyze.NO)

然后,您可以根据需要在查询时定位 myFieldmyField_exact

当然,您需要在 myField_exact 可用之前重新索引数据。

关于java - 用于精确搜索的 Hibernate 搜索和 Elastic 搜索分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57038100/

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