mysql - 搜索引擎和带重音的单词不匹配
问题描述
我正在尝试为我的网站制作搜索引擎。除非单词中有重音,否则它会起作用。
例如,如果我有标题:“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);
}
谢谢
解决方案
这听起来像是一个编码问题,这意味着您当前的编码不支持重音字符。这是一种使用 UTF-8 编码创建 MySQL 数据库的方法,它肯定会支持您示例中的重音字符:
CREATE DATABASE yourdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
这将修复 MySQL 方面的问题,假设您尚未使用支持这些重音字符的编码。在 PHP 方面,它有点复杂,但您还需要确保支持正确的编码。我向您推荐一个很好的博客站点,其中涵盖了 PHP 的详细信息。
推荐阅读
- javascript - 重新渲染内部带有异步函数的组件
- typo3 - TYPO3:我可以在 javascript 代码中使用掩码字段吗
- rest - 谷歌扳手和直接 REST api 调用
- python - 使用 Python 使用 Aspose PDF Cloud 替换 PDF 中的文本
- c++ - 如何在不使用方法参数列表的情况下将类成员的实例化内容传递给另一个类实例的方法(带有最小示例)
- javascript - 如何根据 React 中的元素数量进行分页?
- javascript - 使用 ReactJs 组件的 API 调用不起作用
- stripe-payments - Stripe - 最大数量订阅
- java - org.springframework.beans.factory.UnsatisfiedDependencyException 上的 Spring Boot 空指针异常
- c# - 使用 WinSCP 和 C# 匹配不区分大小写的文件夹名称