我有一段时间试图在单词的开头或中间处理撇号字符.我能够处理占有欲的英语,但我也试图迎合法语并处理像"动作"这样的词,其中撇号字符出现在单词的开头而不是像"她的"那样.
通过haystack auto_query搜索"d action"将返回结果,但"d'action"不返回任何内容.如果我直接查询elasticsearch _search API(_search?q = D%27ACTION),我会得到"d'action"的结果.因此,我想知道这是否是干草堆引擎问题.
我的配置:
'settings': {
"analysis": {
"char_filter": {
"quotes": {
"type": "mapping",
"mappings": [
"\\u0091=>\\u0027",
"\\u0092=>\\u0027",
"\\u2018=>\\u0027",
"\\u2019=>\\u0027",
"\\u201B=>\\u0027"
]
}
},
"analyzer": {
"ch_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ['ch_en_possessive_word_delimiter', 'ch_fr_stemmer'],
"char_filter": ['html_strip', 'quotes'],
},
},
"filter": {
"ch_fr_stemmer" : {
"type": "snowball",
"language": "French"
},
"ch_en_possessive_word_delimiter": {
"type": "word_delimiter",
"stem_english_possessive": True
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还有ElasticsearchSearchBackend和BaseEngine的子类,所以我可以添加上面的配置:
class ConfigurableESBackend(ElasticsearchSearchBackend):
# Word reserved by Elasticsearch for special use.
RESERVED_WORDS = (
'AND', …Run Code Online (Sandbox Code Playgroud)