gpt4 book ai didi

java : Elasticsearch listing redundant values

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

我已经习惯了elasticsearch很长一段时间了,但现在我试图找到的解决方案是列出给定搜索字符串的准确值。

我现在用java编写的代码:

BoolQueryBuilder queryBuiler = new BoolQueryBuilder();
queryBuiler.must(new QueryStringQueryBuilder("tagName : *salary march*"));

SearchResponse response = esclient.prepareSearch(index).setTypes(type)
.setQuery(queryBuiler)
.execute().actionGet();

SearchHit[] hits = response.getHits().getHits();
for (SearchHit hit : hits) {
Map map = hit.getSource();
System.out.println((String) map.get("tagName"));
list.add((String) map.get("tagName"));
}

list = list.stream().distinct().collect(Collectors.toList());

for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}

使用此代码,如果搜索搜索字符串“salary March”,我希望搜索的解决方案类似于“salary slip March 2018”

但“salary March”的实际结果列出了索引中与“salary”相关的所有内容。

salary slip march
salary slip april
SALARY SLIP NOVEMBER
NEW SALARY SLIP

是否可以对提到的所有搜索字符串进行精确匹配的部分单词搜索?也就是说,如果我搜索“工资进行曲”,那么我希望结果仅包含“工资单进行曲”。

非常感谢您的帮助和提前致谢。

最佳答案

令人惊奇的是你正在使用queryStringQuery

  • 这将首先拆分查询,然后搜索生成的标记。和默认运算符,即OR

因此,您将获得与工资或行军相匹配的文件。

这是解决方案。

        BoolQueryBuilder queryBuiler = new BoolQueryBuilder();
queryBuiler.must(new QueryStringQueryBuilder("tagName : *salary march*").defaultOperator(Operator.AND));

SearchResponse response = esclient.prepareSearch(index).setTypes(type)
.setQuery(queryBuiler)
.execute().actionGet();

SearchHit[] hits = response.getHits().getHits();
for (SearchHit hit : hits) {
Map map = hit.getSource();
System.out.println((String) map.get("tagName"));
list.add((String) map.get("tagName"));
}

list = list.stream().distinct().collect(Collectors.toList());

for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
}

此外,我认为您没有了解 Elasticsearch 的基本概念。

根据摄取期间索引的术语搜索查询。

我认为应用于您的此字段的分析器是标准的,它将生成 token

  • 工资
  • 三月

搜索将发生在该内容上,而不是在您索引的实际内容上。

所以不需要使用通配符查询。

关于java : Elasticsearch listing redundant values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48859989/

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