如何在索引上搜索拼写错误的单词?

时间:2018-02-14 18:14:01

标签: laravel elasticsearch search

我正在构建一个遵循此工作流程的监控Web应用程序:

  • 一个品牌(沃尔沃,宝马等)的社交帐户,这个例子的facebook,链接到应用程序,并检索所有信息(评论,反应,帖子)并保存到本地数据库。

  • 生成统计信息并显示在内部信息中心上。

  • 然后,用户可以在此信息中心内搜索包含特定字词的帖子或评论。

我在搜索表单上使用Select2,只允许用户搜索单个单词,即。 [坏,车,服务]。

使用mySQL搜索的简单实现已经部署完毕,我正在与Elastic Search合作以寻求更好的解决方案。

所以我的问题是:

在本地数据库中,我有5条记录包含:

  • “这辆车太可怕了”
  • “这辆车真是太棒了”
  • “这辆车真的很好”
  • “这辆车真的很糟糕”
  • “这辆车真的很糟糕”

当用户搜索“糟糕”

时,如何获取所有这些记录

我一直在尝试使用documentation上的短语建议示例而没有任何运气。

感谢。

1 个答案:

答案 0 :(得分:1)

请查看fuzzinessfuzzy query。应该对你有所帮助。

您可以match query使用fuzziness = AUTO

GET /_search
{
  "query": {
    "match" : {
      "your_field_name" : {
        "query" : "awful",
        "fuzziness": "AUTO"
      }
    }
  }
}

如果AUTO不够,您可以在documentation上指定参数。