弹性搜索:的搜索词 [英] Elasticsearch: Shingles not working with odd no. of search words

查看:167
本文介绍了弹性搜索:的搜索词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当尝试搜索奇数不。的单词与我的木瓦分析仪没有结果显示。



'新德里abcd '不返回任何结果,但'新德里abcd xyz



我的分析器看起来像下面

  {
search:{
settings:{
index:{
analysis:{
filter:{
my_shingle_filter:{
max_shingle_size:2,
min_shingle_size:2,
output_unigrams:false,
type :shingle
},
autocomplete_filter:{
type:edge_ngram,
min_gram:1,
max_gram :40
}
},
分析器:{
my_shingle_analyzer:{
filter:[
smallcase,
my_shingle_filter
],
type :custom,
tokenizer:whitespace
},
shingle_with_autocomplete:{
filter:[
smallcase,
my_shingle_filter,
autocomplete_filter
],
type:custom,
tokenizer:whitespace
}
}
}
}
}
}
}

该类型的映射在下面共享

  {
search:{
映射:{
address:{
properties:{
full_address:{
type:text,
norms :
fields:{
edge_n_grams:{
type:text,
norms:false,
analyzer :autocomplete
},
shingles:{
type:text,
norms:false,
analyzer shingle_with_autocomplete
},
同义词:{
type:text,
norms:false,
analyzer:synonym_autocomplete
}
},
analyzer:空格
}
}
}
}
}
}



查询1



  GET搜索/地址/ _search?_source = full_address 
{
查询:{
match:{
full_address.shingles:{
query:new delhi,
analyzer:my_shingle_analyzer
}
}
}
}



结果



  {
...
hits:{
total:21801,
max_score :
$$$$$$$$$$$ 581c50297fd84ecc35420570,
_score:8.015874,
_source:{
full_address:新德里nagar palika adarsh vidyalay新德里nagar palika adarsh vidyalay tilak lane tilak marg区域新delhi delhi 110001
}
},{
_index:search,
_type:address,
_id:581c502a7fd84ecc35422010 ,
_score:7.013889,
_source:{
full_address:国王大厅的jehovant见证人gyan bharti公立学校saket新德里新德里德里110017
}
},
...
]
}
}



查询2



  GET搜索/ address / _search?_source = full_address 
{
query:{
match:{
full_address.shingles:{
query:new delhi nag,
analyzer:my_shingle_analyzer
}
}
}
}



结果



  {
...,
hits:{
total:0,
max_score:null,
hits:[]
}
}

'新德里nagar pal 返回正确的结果。 / p>

任何帮助/见解将不胜感激

解决方案

这是一个<在ES 5.2.x中的href =https://github.com/elastic/elasticsearch/issues/23346 =nofollow noreferrer>错误。问题是新版本中的单个过滤器


When trying to search with odd no. of words with my shingle analyzer no result shows up.

'new delhi abcd' does not return any results but 'new delhi abcd xyz' returns

My analyzers look like below

{
    "search": {
        "settings": {
            "index": {
                "analysis": {
                    "filter": {
                        "my_shingle_filter": {
                            "max_shingle_size": "2",
                            "min_shingle_size": "2",
                            "output_unigrams": "false",
                            "type": "shingle"
                        },
                        "autocomplete_filter": {
                            "type": "edge_ngram",
                            "min_gram": "1",
                            "max_gram": "40"
                        }
                    },
                    "analyzer": {
                        "my_shingle_analyzer": {
                            "filter": [
                                "lowercase",
                                "my_shingle_filter"
                            ],
                            "type": "custom",
                            "tokenizer": "whitespace"
                        },
                        "shingle_with_autocomplete": {
                            "filter": [
                                "lowercase",
                                "my_shingle_filter",
                                "autocomplete_filter"
                            ],
                            "type": "custom",
                            "tokenizer": "whitespace"
                        }
                    }
                }
            }
        }
    }
}

The mapping for the type is shared below

{
    "search": {
        "mappings": {
            "address": {
                "properties": {
                    "full_address": {
                        "type": "text",
                        "norms": false,
                        "fields": {
                            "edge_n_grams": {
                                "type": "text",
                                "norms": false,
                                "analyzer": "autocomplete"
                            },
                            "shingles": {
                                "type": "text",
                                "norms": false,
                                "analyzer": "shingle_with_autocomplete"
                            },
                            "synonym": {
                                "type": "text",
                                "norms": false,
                                "analyzer": "synonym_autocomplete"
                            }
                        },
                        "analyzer": "whitespace"
                    }
                }
            }
        }
    }
}

Query 1

GET search/address/_search?_source=full_address
{
    "query": {
        "match": {
            "full_address.shingles": {
                "query": "new delhi",
                "analyzer": "my_shingle_analyzer"
            }
        }
    }
}

Results

{
    ...
    "hits": {
        "total": 21801,
        "max_score": 8.015874,
        "hits": [{
                "_index": "search",
                "_type": "address",
                "_id": "581c50297fd84ecc35420570",
                "_score": 8.015874,
                "_source": {
                    "full_address": "new delhi nagar palika adarsh vidyalay new delhi nagar palika adarsh vidyalay tilak lane tilak marg area new delhi delhi 110001"
                }
            }, {
                "_index": "search",
                "_type": "address",
                "_id": "581c502a7fd84ecc35422010",
                "_score": 7.013889,
                "_source": {
                    "full_address": "kingdom hall of jehovant witness gyan bharti public school saket new delhi new delhi delhi 110017"
                }
            },
            ...
        ]
    }
}

Query 2

GET search/address/_search?_source=full_address
{
    "query": {
        "match": {
            "full_address.shingles": {
                "query": "new delhi nag",
                "analyzer": "my_shingle_analyzer"
            }
        }
    }
}

Results

{
  ...,
  "hits": {
    "total": 0,
    "max_score": null,
    "hits": []
  }
}

'new delhi nagar pal' returns proper results.

Any help/insights would be appreciated

解决方案

This is a bug in ES 5.2.x. Issue is with the single filter in new version

这篇关于弹性搜索:的搜索词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆