0

如何使 Elasticsearch 正确查询,其中关键字应包含空格但键入相邻。例如

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

我目前的设置是:

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

2 回答 2

0

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

https://github.com/ankane/searchkick

于 2013-07-25T05:39:35.417 回答
0

没有开箱即用的标记器/标记过滤器来明确处理您的要求。最接近的是复合词标记过滤器,它需要手动提供一个字典文件,在您的情况下可能需要完整的英语字典才能正常工作。即使这样,如果没有很多额外的逻辑,它也可能会在其他词的词干、缩写词等方面存在问题。尽管取决于您的确切要求,但它可能已经足够好了。

于 2013-05-17T15:16:03.997 回答