【发布时间】:2014-05-28 15:42:29
【问题描述】:
我有代表用户的文档。他们有字段name 和surname。
假设我有两个用户被编入索引 - Michael Jackson 和 Michael Starr。我希望这些示例搜索能够正常工作:
- 迈克尔 => { 迈克尔·杰克逊, 迈克尔·斯塔尔 }
- Jack Mich => { Michael Jackson }(不完整的词和颠倒的顺序)
- Michal Star => { Michael Starr }(模糊搜索)
我尝试了不同的查询,并从带有 cross_fields 类型的 multi_match 查询中获得了最佳结果。但是有两个问题:
- 只有当两个单词中至少有一个单词完整时,它才会找到一些东西。如果我输入 Jackson Mich,它会找到 Michael Jackson,但如果我输入 Jack Mich,它什么也找不到(但我希望它找到它)。
- 不能设置为模糊搜索。我真的需要模糊搜索,但要保持 multi_match 与 cross_fields 类型的质量。
换句话说,我想实现类似 Facebook 的人员搜索。
我对 ElasticSearch 还很陌生,所以我可能遗漏了一些明显的东西。对不起,如果我这样做了。
【问题讨论】:
标签: elasticsearch full-text-search fuzzy-search