gpt4 book ai didi

elasticsearch - 多字段搜索查询字符串中的同义词

转载 作者:行者123 更新时间:2023-12-03 01:51:11 26 4
gpt4 key购买 nike

看起来Elasticsearch在没有指定字段的情况下使用查询字符串进行多字段搜索时并未考虑字段分析器。
可以将其配置为索引或在查询中指定吗?

这是一个动手的例子。

来自commit(spring-data-elasticsearch)的给定文件。
有一个测试SynonymRepositoryTests,它将与QueryBuilders.queryStringQuery("text:british")QueryBuilders.queryStringQuery("british").analyzer("synonym_analyzer")查询一起通过。

是否可以通过QueryBuilders.queryStringQuery("british")查询传递它,而无需指定查询的字段和分析器?

最佳答案

您可以查询而无需指定字段或分析器。默认情况下,query string query将查询_all字段,该字段是所有字段的组合,并使用standard analyzer。因此QueryBuilders.queryStringQuery("british")将起作用。

您可以在创建索引时exclude所有字段中的某些字段,还可以在copy_to功能的帮助下创建自定义所有字段。

更新

创建索引时,您必须在_all字段上使用自定义分析器

PUT text_index
{
"settings": {
"analysis": {
"filter": {
"edge_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10
}
},
"analyzer": {
"prefix_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"trim",
"edge_filter"
]
}
}
}
},
"mappings": {
"test_type": {
"_all": {
"enabled": true,
"analyzer": "prefix_analyzer" <---- your synonym analyzer
},
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string",
"analyzer": "simple"
}
}
}
}
}

您可以用您的synonym_analyzer替换prefix_analyzer,然后它应该可以工作。

关于elasticsearch - 多字段搜索查询字符串中的同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40319291/

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