我目前正在使用此端点和请求执行搜索:
elasticserver.com/citysuggest/_suggest -d {
"result": {
"text": "Chicago",
"completion": {
"field": "autoCompleteName"
}
}
这是我的索引映射:
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1,
"index": {
"mapper": {
"dynamic": false
}
},
"analysis": {
"analyzer": {
"str_search_analyzer": {
"tokenizer": "standard",
"filter": ["standard", "str_delimiter", "asciifolding", "porter_stem"]
},
"str_index_analyzer": {
"tokenizer": "standard",
"filter": ["standard", "str_delimiter", "asciifolding", "porter_stem"],
"char_filter": "html_strip"
}
},
"filter": {
"str_delimiter": {
"type": "word_delimiter",
"generate_word_parts": true,
"catenate_words": true,
"catenate_numbers": true,
"catenate_all": true,
"split_on_case_change": true,
"preserve_original": true,
"split_on_numerics": true,
"stem_english_possessive": true
}
}
}
},
"mappings": {
"city": {
"_source": {
"enabled": false
},
"dynamic": false,
"properties": {
"_all": {
"enabled": false
},
"autoCompleteName": {
"type": "completion",
"index_analyzer": "str_index_analyzer",
"search_analyzer": "str_search_analyzer"
}
}
}
}
}
当我搜索“芝加哥”时,它会返回预期结果,因为它找到了与芝加哥匹配的内容,但是,当我搜索“芝加哥”时,它不返回任何内容。我一辈子都无法弄清楚我需要为使搜索不区分大小写而需要更改的内容。如果用户键入“ ChiCAgO”,则应返回我的芝加哥结果,相反,我什么也得不到。
为了测试我的分析仪,我运行了这个:
elasticserver.com/citysuggest/_analyze?text=ChicaGo&pretty
然后我得到了看起来像正确标记化的值。
{
"tokens": [
{
"token": "chicago",
"start_offset": 0,
"end_offset": 7,
"type": "<ALPHANUM>",
"position": 1
}
]
}
您只需要在分析器中添加小写标记过滤器即可。
"analysis": {
"analyzer": {
"str_search_analyzer": {
"tokenizer": "standard",
"filter": ["standard", "str_delimiter", "asciifolding", "porter_stem", "lowercase"]
},
"str_index_analyzer": {
"tokenizer": "standard",
"filter": ["standard", "str_delimiter", "asciifolding", "porter_stem", "lowercase"],
"char_filter": "html_strip"
}
},
"filter": {
"str_delimiter": {
"type": "word_delimiter",
"generate_word_parts": true,
"catenate_words": true,
"catenate_numbers": true,
"catenate_all": true,
"split_on_case_change": true,
"preserve_original": true,
"split_on_numerics": true,
"stem_english_possessive": true
}
}
}
您的测试用例成功了,因为您没有指定分析器,请尝试:
curl -XGET 'localhost:9200/citysuggest/_analyze?analyzer=str_index_analyzer&text=ChicaGo&pretty'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句