我有代表用户的文档,它们具有name
和surname
字段。
假设我索引了两个用户-迈克尔·杰克逊和迈克尔·斯塔尔。我希望这些示例搜索起作用:
- Michael => { Michael Jackson, Michael Starr }
- Jack Mich => { Michael Jackson } (不完整的单词和颠倒顺序)
- Michal Star => { Michael Starr } (模糊搜索)
我尝试了不同的查询,并从multi_match query with cross_fields类型中获得了最佳结果。但是有两个问题:
- 只有在至少一个单词完整的情况下才能找到匹配内容。如果我输入Jackson Mich,它可以找到Michael Jackson,但如果我输入Jack Mich,它就找不到任何内容(但是我希望它可以找到)。
- 它不能设置为模糊搜索。我真的需要模糊搜索,但要保持multi_match with cross_fields类型的质量。
换句话说,我想要实现类似Facebook的人员搜索。
我对ElasticSearch还不太熟悉,所以可能会漏掉一些显而易见的东西。如果我有任何失误,敬请谅解。