【发布时间】:2016-10-16 05:13:05
【问题描述】:
我已经在现有代码库中使用 ElasticSearch 工作了几天,所以我希望一旦我知道自己在做什么,答案就会很容易。当我使用复合词(如“eyewitness”)或其由空格分隔的组成词(如“eye witness”)进行搜索时,我想扩展搜索以产生相同的结果。
例如,我有一个玩具车目录,其中包括“救火车”玩具和“消防车”玩具。我想确保如果有人搜索这些词中的任何一个,结果将同时包含“救火车”和“消防车”条目。
我一开始试图用匹配的“模糊性”来做到这一点,希望“消防车”被认为是与“救火车”相去甚远的一个变换,但这不起作用:ES 模糊性是逐字的,并且会不添加或删除空白字符作为有效的转换。
我知道我可以在生成查询之前进行一些暴力破解,方法是尝试通过将大词分解成小词并将小词组合成大词并根据字典检查所有这些词来提出额外的搜索词,但是当“模糊性”和专有名称成为任务的一部分时,这种情况很快就会分崩离析。
似乎这正是 ES 应该做好的事情,而我只是没有合适的词汇来寻找解决方案。
谢谢大家。
【问题讨论】:
标签: elasticsearch fuzzy-search