非常感谢@Random,我修改了映射,如下所示。为了测试,我用“电影”作为我的索引类型。 注意:我也添加了search_analyzer。没有那个,我没有得到正确的结果。 但是我有以下使用search_analyzer的疑虑。ElasticSearch:我们可以在索引过程中同时应用n-gram和语言分析器
1]我们可以在语言分析器的情况下使用自定义search_analyzer吗?
2]我得到所有的结果,由于我已经使用的非克分析仪,而不是由于英文分析仪?
{
"settings": {
"analysis": {
"analyzer": {
"english_ngram": {
"type": "custom",
"filter": [
"english_possessive_stemmer",
"lowercase",
"english_stop",
"english_stemmer",
"ngram_filter"
],
"tokenizer": "whitespace"
},
"search_analyzer":{
"type": "custom",
"tokenizer": "whitespace",
"filter": "lowercase"
}
},
"filter": {
"english_stop": {
"type": "stop"
},
"english_stemmer": {
"type": "stemmer",
"language": "english"
},
"english_possessive_stemmer": {
"type": "stemmer",
"language": "possessive_english"
},
"ngram_filter": {
"type": "ngram",
"min_gram": 1,
"max_gram": 25
}
}
}
},
"mappings": {
"movie": {
"properties": {
"title": {
"type": "string",
"fields": {
"en": {
"type": "string",
"analyzer": "english_ngram",
"search_analyzer": "search_analyzer"
}
}
}
}
}
}
}
更新:
使用搜索仪也无法工作consistently.and需要与我的发现this.Updating更多帮助。
我按照建议使用了以下映射(注意:该映射不使用搜索分析器),为了简单起见,我们只考虑英文分析器。
{
"settings": {
"analysis": {
"analyzer": {
"english_ngram": {
"type": "custom",
"filter": [
"english_possessive_stemmer",
"lowercase",
"english_stop",
"english_stemmer",
"ngram_filter"
],
"tokenizer": "standard"
}
},
"filter": {
"english_stop": {
"type": "stop"
},
"english_stemmer": {
"type": "stemmer",
"language": "english"
},
"english_possessive_stemmer": {
"type": "stemmer",
"language": "possessive_english"
},
"ngram_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 25
}
}
}
}
}
创建索引:
PUT http://localhost:9200/movies/movie/1
{"title":"[email protected] movie"}
尝试以下查询:
GET http://localhost:9200/movies/movie/_search
{
"query": {
"multi_match": {
"query": "$peci mov",
"fields": ["title"],
"operator": "and"
}
}
}
}
我没有结果对于这一点,我在做什么错? 我想获得结果:
1] Special characters
2] Partial matches
3] Space separated partial and full words
再次感谢!
感谢很多随机的,你的回答确实有帮助,但我对这个有些怀疑,我已经再次修改我的问题,你可以请帮助? – SSG
您能否提供一个例子,您的'search_analyzer'比原来的更好?顺便说一句,你最好保留原来的答案,只需添加一个“更新”部分的修正案,甚至要求一个单独的问题,否则它会增加一些混淆 – Random
嗨随机!对延迟响应抱歉,但看起来像使用search_analyzer也不一致,我更新了我的问题,在更新部分。如果你可以看一看,这将是很大的帮助。 – SSG