【问题标题】:Search with misspelled words (Laravel)搜索拼写错误的单词 (Laravel)
【发布时间】:2021-10-05 18:28:31
【问题描述】:

我想搜索拼写错误的单词,例如,如果用户输入:'parmacist',我的搜索将得到所有包含单词'pharmacist'的结果。

我尝试使用 '%Like%' 和 'Full Text' 但不起作用。

点赞搜索

$query = $request->input('query');
Post::select('name')->where("name","LIKE","%{$query}%")->get();

全文

$query = $request->input('query');
Post::select('name')->whereRaw("MATCH(name) AGAINST(?)",array($query));

有办法得到吗?

谢谢!

【问题讨论】:

  • 根据您的问题以及下面的 cmets,我认为您的用例足够复杂,可以证明使用 ElasticSearch 等专用搜索引擎是合理的。这需要一些设置,但如果您依赖全文搜索并想要模糊搜索甚至更复杂的东西,那么最终还是值得的

标签: laravel search full-text-search


【解决方案1】:

SOUNDS LIKE 函数用于您正在查找的内容,例如:

Post::select('name')->where("name","SOUNDS LIKE","%{$query}%")->get();

查看文档here。

【讨论】:

  • 感谢您的帮助。但是有一种方法可以用 Laravel 和 Eloquent 来实现吗?谢谢!
  • Post::select('name')->where("name","SOUNDS LIKE",$query)->get(); 可能会工作
  • 已经尝试过这种方式,我没有得到任何结果,甚至没有确切的词。 *我想了解投反对票的原因。没有关于这个论点的帖子,只有一个,但很老了。
  • 我发现了问题,'name'字段是一个全文索引,因此它不起作用。
猜你喜欢
  • 1970-01-01
  • 2018-07-25
  • 2016-05-14
  • 1970-01-01
  • 2016-01-20
  • 2013-12-24
  • 2015-05-06
  • 2010-10-16
相关资源
最近更新 更多