首页 > 解决方案 > 搜索引擎和带重音的单词不匹配

问题描述

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

例如,如果我有标题:“Musée Baudouin”,如果我写“Musee Baudouin”或“Musée Baudouin”,它不会显示任何内容。如果我只写“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);
  }

谢谢

标签: mysqllaravel

解决方案


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

CREATE DATABASE yourdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

这将修复 MySQL 方面的问题,假设您尚未使用支持这些重音字符的编码。在 PHP 方面,它有点复杂,但您还需要确保支持正确的编码。我向您推荐一个很好的博客站点,其中涵盖了 PHP 的详细信息。


推荐阅读