gpt4 book ai didi

java - Snowball search_analyzer 不适用于 multi_match 查询

转载 作者:行者123 更新时间:2023-11-30 04:34:53 26 4
gpt4 key购买 nike

我正在尝试使用雪球分析器对索引进行查询。它似乎无法正常工作。如果我输入“starbucks”,它将返回 0 个结果,但是如果我输入“starbuck”,它将返回名称中包含“Starbucks”的所有数据。

我知道在进行普通搜索时,您必须显式指定字段才能使用 search_analyzer。

_mapping 说我正在使用雪球索引_分析器,但没有提到雪球搜索_分析器,这很奇怪吗?

映射片段:

name: {
type: "string",
search_analyzer : "snowball",
index_analyzer : "snowball",
boost : 1
},
tags: {
type: "string",
search_analyzer : "snowball",
index_analyzer : "snowball",
boost : 4
}

摘自/businesses/business/_mapping

name: {type: "string",analyzer: "snowball"},
tags: {type: "string",boost: 4,analyzer: "snowball"}

用于执行搜索的 Java 代码:

val response = client.prepareSearch("businesses")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(termQuery("name", term))
.setFrom(0).setSize(100).setExplain(true)
.execute()
.actionGet();

最佳答案

termQuery 中指定的术语不会按原样进行分析和使用。由于单词 Starbucks 被索引为术语 starbuck,因此您可以获得一些结果。当您搜索术语 Starbucks 时,索引中没有该术语,因此您没有得到任何结果。我建议改用 text 查询,它将对您的术语进行分析。

val response = client.prepareSearch("businesses")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(text("name", term))
.setFrom(0).setSize(100).setExplain(true)
.execute()
.actionGet();

关于java - Snowball search_analyzer 不适用于 multi_match 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13729973/

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