✨ Feat: 新增mysql全文检索
This commit is contained in:
parent
e1ee7782df
commit
7450368fb8
49
数据库/基础/2.mysql全文检索.md
Normal file
49
数据库/基础/2.mysql全文检索.md
Normal file
@ -0,0 +1,49 @@
|
||||
---
|
||||
id: '2019-03-27-09-48'
|
||||
date: '2019/03/27 09:48'
|
||||
title: 'mysql全文检索'
|
||||
tags: ['mysql', 'fulltext']
|
||||
categories:
|
||||
- '数据库'
|
||||
- '基础'
|
||||
---
|
||||
|
||||
  最近想给个人的项目加个全文检索,但是 VPS 的内存太捉急,在跑了一个 mysql,几个 node,和一个 java 后已经不足以再跑一个 es,所以就想着在 mysql 里做全文检索。
|
||||
|
||||
**说明:**mysql 的全文检索速度较慢,只适合小微系统临时使用。
|
||||
|
||||
  从 MySQL 5.7.6 开始,MySQL 内置了 ngram 全文检索插件,用于支持中文分词,并且可以在 MyISAM 和 InnoDB 中使用。
|
||||
|
||||
# 配置
|
||||
|
||||
  首先设置分词大小,修改 mysql 配置文件(linux 一般在/etc/mysql/my.cnf,windows:一般为 my.ini),在[mysqld]下加一行:
|
||||
|
||||
```properties
|
||||
[mysqld]
|
||||
# 通常还有其他配置,这里未列出
|
||||
ngram_token_size=2
|
||||
```
|
||||
|
||||
该值默认为 2,范围:1~10.
|
||||
|
||||
# 建立索引
|
||||
|
||||
  对检索字段建立全文索引,注意要选择解析引擎-- **WITH PARSER `ngram`**,如果多多个字段检索,需建立这些字段的联合全文索引。比如下面 name 字段索引只能用于对 name 进行检索。如果要对`name,age`进行检索,需要再建立一个`name,age`的联合全文检索。
|
||||
|
||||
```sql
|
||||
ALTER TABLE `psn`.`game`
|
||||
ADD FULLTEXT INDEX `name_full_index`(`name`) WITH PARSER `ngram`;
|
||||
```
|
||||
|
||||
# 查询语法
|
||||
|
||||
  基本语法:
|
||||
|
||||
```sql
|
||||
select id,name,description from game where match(`name`) against('小明' IN boolean MODE)
|
||||
```
|
||||
|
||||
查询语法详见:
|
||||
[https://blog.csdn.net/zwrj1130/article/details/55506179](https://blog.csdn.net/zwrj1130/article/details/55506179)
|
||||
|
||||
**本篇原创发布于:**[FleyX 的个人博客](tapme.top/blog/detail/2019-03-27-09-48)
|
Loading…
x
Reference in New Issue
Block a user