Elasticsearch / Lucene拼错空白

时间:2013-05-17 07:40:47

标签: lucene elasticsearch

如何使Elasticsearch正确查询哪个关键字应包含空格,而是键入相邻。 E.g。

“thisisaquery” - > “这是一个查询”

我当前的设置是:

"settings": {
    "index": {
        "analysis": {
            "analyzer": {
                "autocomplete": {
                    "tokenizer": "whitespace",
                    "filter": [
                        "lowercase", "engram"
                    ]
                }
            },
            "filter": {
                "engram": {
                    "type": "edgeNGram",
                    "min_gram": 3,
                    "max_gram": 10
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

没有开箱即用的tokenizer / token过滤器来明确处理您要求的内容。最接近的是compound word token filter,需要手动提供字典文件,在您的情况下可能需要完整的英文字典才能正常工作。即使这样,它可能会出现与其他单词,缩写等词汇有关的单词的问题,而没有太多额外的逻辑。根据您的具体要求,它可能已经足够好了。

答案 1 :(得分:0)

这个红宝石项目声称这样做。如果您使用ruby,或者只是查看他们的代码并为其复制他们的分析器设置,您可以尝试:)

https://github.com/ankane/searchkick