我是ELasticsearch的新手,需要你的帮助才能在分析的领域找到无与伦比的ES成绩。 我有一个自定义分析器如下:
"analyzer": {
"testing_analyzer": {
"type": "custom",
"char_filter": "html_strip",
"tokenizer": "standard",
"filter": [
"lowercase",
"asciifolding",
"snowball",
"stop"
]
},
"testing_search_analyzer": {
"type": "custom",
"char_filter": "html_strip",
"tokenizer": "standard",
"filter": [
"lowercase",
"asciifolding"
]
}
}
我已将此分析仪设置为索引和放大器上的字段。搜索如下。
"name":
{
"type": "string",
"analyzer": "testing_analyzer",
"search_analyzer": "testing_search_analyzer"
}
但是当搜索名称“universitàdibologna”时,它返回的第一个结果记录具有相同的匹配,但是其他一些记录不匹配(结果中的第二个记录):
Record1:
[ "Università di Bologna", "University of Bologna", "CNR", "Università di Pisa", "University of Pisa", "Mineraria e Delle Tecnologie Ambientali" ]
Record2:
[ "University of Salerno", "Università di Salerno" ]
查询:
{
"fields": [
"doc_id",
"name"
],
"query": {
"match": {
"name": "Università di bologna"
}
}
}
任何帮助?!
答案 0 :(得分:1)
结果如预期。
默认情况下,匹配查询会对tokenizer
生成的标记执行“OR”。
尝试将查询更改为以下内容:
{
"fields": [
"doc_id",
"name"
],
"query": {
"match": {
"name": {
"query": "Università di bologna",
"operator": "and"
}
}
}
}