搜索引擎和带有重音符号的单词不匹配

时间:2018-12-17 15:08:07

标签: mysql laravel

我正在尝试为我的网站创建搜索引擎。除非单词中带有重音,否则它会起作用。

例如,如果我有标题:“MuséeBaudouin”,如果我写“ Musee Baudouin”或“MuséeBaudouin”,则不会显示任何内容。如果我只写“ Baudouin”,那就行了。

如果文章的标题带有重音,我找不到我的文章。

怎么办?

public function searchNav(Request $request)
  {
    $search = $request->get('search');

    $buildings = Building::where('title', 'LIKE', '%' . $search . '%')->orWhere('city', 'LIKE', '%' . $search . '%')->published()->get();
    $events = Event::where('title', 'LIKE', '%' . $search . '%')->orWhere('city', 'LIKE', '%' . $search . '%')->published()->get();

    // Create a new collection and merge elements
    $all = new Collection();
    $all = $all->merge($buildings);
    $all = $all->merge($events);
    $all = $all->sortByDesc('updated_at');
    $this->data['items'] = $all->all();

    return view('pages.search-nav-results', $this->data);
  }

谢谢

1 个答案:

答案 0 :(得分:2)

这听起来像是编码问题,这意味着您当前的编码不支持带重音符号的字符。这是一种使用UTF-8编码创建MySQL数据库的方法,该编码肯定会支持示例中的重音字符:

CREATE DATABASE yourdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

这将解决MySQL的问题,假设您尚未使用支持这些重音字符的编码。在PHP方面,它有点复杂,但是您还需要确保支持正确的编码。我指的是一个good blog site,其中涵盖了PHP的详细信息。