
已解决问题
谷歌ElalfChofsNaf用户在2016.04.19提交了关于“起亚k3基于mysql全文索引的深入理解”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-23T06:45:37。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,你是我的宝贝,你是我的花,谢谢你对我的帮助!
详细问题描述及疑问:期待您的答案,你是我的宝贝,你是我的花,谢谢你对我的帮助!
前言:本文简
Q:全文索引适用于什么场合
A:全文索引是目前实
至于更详细的介绍请自
----------------------------------------------------
一、如何设
如图点击结尾处的{全文搜索}即可设置全文索引,不同MYSQL版本名字可能不同。
二、设置条件
1
2.字段类型
三、配置
my.ini配置文件中添加
[mysqld]
f
保存后重启MYSQL,执行SQL语句
Sh**OWVARIABLES
查看ft
1.确认my.ini正确配置,注意不要搞错my.in
2.确认mysql已经重启,实在不行重启电脑
注:重新设置配置后,已经设置的索引需要
四、SQL语法
首先
复制代码代码如下:
CREATETAB
`id`int(11
`char`char(50)NOT**LL,
`varchar`varchar(50)NO
`text
PRIMARYKEY(`id`),
FULLTEXTKEY`char`(`char
FULLTEXTKEY`varchar`(`varchar`),
F
)ENGINE=MyISAMDEFAULTCh**AR**T
IN
(1,'abc我知
搜索`char`字段
复制代码代码如下:
**LECT*FROM`t
这时你也许会想:哎呀怎
你不要着急,做程序是这样的,出错总是有的,静下心来,着急是
如果
如果你想去除50%的现
复制代码代码如下:
**LE
这样就可以查询出结果了,但是我们不推荐使用。
全文索引的搜索模式的介绍自行百度。
我们先加入几条无用**已解除50%限制
复制代码代码如下:
IN**RTINTO`temp`(
`id`,
`char`,
`varchar`,
`text`
)
VALUES(
**LL,'7','7','7'
),(
**LL,'7','7','7'
),(
**LL,'a,bc,我,知道,1,23','a,bc,我,知道,1,23','a,bc,我,知道,1,23'
),(
**LL,'x','x','x'
);
这时你执行以下SQL语句都可以查询到**
复制代码代码如下:
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('a');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('bc');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('我');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('知道');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('1');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('23');
以下SQL搜索不到**
复制代码代码如下:
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('b');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('c');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('知');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('道');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('2');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('3');
如果搜索多个词,请用空格或者逗号隔开
复制代码代码如下:
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('ax');
**LECT*FROM`temp`Wh**EREMATCh**(`char`)AGAINST('a,x');
上面的SQL都可以查询到三条**
五、分词
看到这里你应该发现我们字段里的值也是分词,不能直接插入原始**。
全文索引应用流程:
1.接收**-**分词-入库
2.接收**-**分词-查询
现在有个重要的问题:怎么对**分词?
**分词一般我们会使用一些成熟免费的分词系统,当然如果你有能力也可以自己做分词系统,这里我们推荐使用SCWS分词插件。
首先下载
1.php_scws.dll注意对应版本
2.XDB词典文件
3.规则集文件
下载地址
安装scws
1.先建一个文件夹,位置不限,但是最好不要中文路径。
2.解压{规则集文件},把xdb、三个INI文件全部扔到D:\scws
3.把php_scws.dll复制到你的Ph**P目录下的EXT文件夹里面
4.在php.ini的末尾加入以下几行:
[scws]
;注意请检查php.ini中的extension_dir的设定值是否正确,否则请将extension_dir设为空,
;再把php_scws.dll指定为绝对路径。
extension=php_scws.dll
scws.default.charset=utf8
scws.default.fpath="D:\scws"
5.重启你的服务器
测试
复制代码代码如下:
$str="测试中文分词";
$so=scws_new();
$so->send_text($str);
$temp=$so->get_result();
$so->close();
var_**mp($temp);
如果安装未成功,请参照官方说明文档
--------------------------------------------------------------------------------
这样我们就可以使用全文索引技术了。