我不知道应该在查询中设置什么。例如,我搜索“大海的东西”。我期望得到像“大海的东西”、“茶的东西”、“海边的东西”这样的结果,但最后一个永远不会出现在结果中。自动、匹配 90%、多重匹配、带有“必须”的查询具有模糊性,这些单词位于一个字段“名称”中。我找不到设置来获得“海边的东西”的结果,也许根本不可能?弹性搜索 7
dictionary_decompounder
过滤器。您可以在查询中使用单词列表或包含文件中的单词列表
映射
PUT /decompounder
{
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "lowercase_english_decompounder_standard_analyzer"
}
}
},
"settings": {
"analysis": {
"analyzer": {
"lowercase_english_decompounder_standard_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"english_decompounder_filter"
]
}
},
"filter": {
"english_decompounder_filter": {
"type": "dictionary_decompounder",
"word_list": [
"some",
"thing",
"sea",
"side"
]
}
}
}
}
}
文件
PUT /decompounder/_bulk
{"create":{"_id":1}}
{"name":"something sea"}
{"create":{"_id":2}}
{"name":"something tea"}
{"create":{"_id":3}}
{"name":"something seaside"}
使用您的参数查询
GET /decompounder/_search?filter_path=hits.hits
{
"query": {
"multi_match" : {
"query": "some sea",
"analyzer": "lowercase_english_decompounder_standard_analyzer",
"fields": ["name"],
"fuzziness": "auto",
"minimum_should_match": "90%"
}
}
}
回应
{
"hits" : {
"hits" : [
{
"_index" : "decompounder",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.7876643,
"_source" : {
"name" : "something sea"
}
},
{
"_index" : "decompounder",
"_type" : "_doc",
"_id" : "3",
"_score" : 0.7876643,
"_source" : {
"name" : "something seaside"
}
},
{
"_index" : "decompounder",
"_type" : "_doc",
"_id" : "2",
"_score" : 0.5831994,
"_source" : {
"name" : "something tea"
}
}
]
}
}