小编arc*_*arc的帖子

如何配置Haystack/Elasticsearch来处理单词开头附近的收缩和撇号

我有一段时间试图在单词的开头或中间处理撇号字符.我能够处理占有欲的英语,但我也试图迎合法语并处理像"动作"这样的词,其中撇号字符出现在单词的开头而不是像"她的"那样.

通过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)

django django-haystack elasticsearch

5
推荐指数
1
解决办法
451
查看次数

标签 统计

django ×1

django-haystack ×1

elasticsearch ×1