基于MySQL的全文索引的深入理解 浏览:337

本文简要介绍了全文检索的应用实例,演示版5.5.24 MySQL。
全文索引的应用是什么
全文索引是目前实现大数据检索的关键技术。
关于百度的更详细的介绍,这篇文章不再说了。
--------------------------------------------------------------------------------
1。如何设置



可以设置全文索引,如图结尾处的完整搜索}。不同MySQL版本的名称可能不同。

两。设置条件
1的存储引擎。表是MyISAM和默认存储引擎InnoDB不支持全文索引(对mysql5.6的InnoDB新版本支持全文索引)
2。字段类型:char、varchar、和文本

三。配置
添加到my.ini配置文件
# MySQL全文索引查询关键词的最小长度限制
{他}
ft_min_word_len = 1
保存和执行SQL语句后重新启动MySQL
复制代码代码如下所示:
显示变量

看看ft_min_word_len已经成立,如果不成立,保证
1。确认my.ini配置正确,小心不要在my.ini位置出错
2。确认MySQL已重新启动,您不能重新启动计算机。
有关其他配置,请自备百度。
注意:在重新配置配置后,需要重新设置已设置的索引以生成索引。

四,sql语法
首先生成临时表
复制代码代码如下所示:
如果不存在,创建表
` ID ` int(11)不为空auto_increment,
char字符(50)不为null,
` varchar ` varchar(50)不为空,
文本文本不为空,
主键(id),
全文重点`焦`(`焦`),
全文重点` varchar `(` varchar `),
全文重点`文本`(`文本`)
)= MyISAM引擎默认的字符集utf8 auto_increment = 2;
插入`温度`(` ID `,`焦`,` varchar `,`文本`)值
(1,1 23因为我知道,我知道一个公元前1一公元前23,我知道1,23');

搜索the'a'value `煤焦领域的`
复制代码代码如下所示:
SELECT * FROM `温度`比赛(`焦`)对(A)

但您会发现查询没有结果。
然后你可能会想,哦,发生什么事了,我会以一种明确的方式做这件事。是丢失还是错误
你不用担心,做的过程是这样的,总会有一些错误,冷静下来,焦虑解决不了问题。

如果一个关键字出现在50%的数据中,该单词将被视为无效单词。
如果您现在想删除50%,请在布尔模式搜索中使用
复制代码代码如下所示:
SELECT * FROM `温度`比赛(`焦`)反对('a'in布尔模式)

这可以让您找到结果,但我们不推荐它。
全文索引的搜索模型是自百度引入的。

我们首先添加一些无用的数据来删除50%个限制
复制代码代码如下所示:
插入温度(
身份证,
'字符',
` varchar `,
`文本`

(价值观
空,7',7',7'
()。
空,7',7',7'
()。
零,一,BC,我,我知道,1,23,A,BC,我,我知道,1,23 ',',公元前,我知道,1,23。
()。
零,x,x,x
);

执行以下SQL语句时,可以查询数据
复制代码代码如下所示:
SELECT * FROM `温度`比赛(`焦`)对(A);
SELECT * FROM `温度`比赛(`焦`)反对('bc);
从匹配(否)中选择*;
SELECT * FROM `温度`比赛(`焦`)反对(知道的);
SELECT * FROM `温度`比赛(`焦`)对(1);
SELECT * FROM `温度`比赛(`焦`)反对('23);

以下SQL搜索没有数据
复制代码代码如下所示:
SELECT * FROM `温度`比赛(`焦`)与(B);
SELECT * FROM `温度`比赛(`焦`)对(C);
SELECT * FROM `温度`比赛(`焦`)反对(知道的);
SELECT * FROM `温度`比赛(`焦`)反对('channel);
SELECT * FROM `温度`比赛(`焦`)与(2');
SELECT * FROM `温度`比赛(`焦`)反对(远);

如果你搜索不止一个单词,请用空格或逗号隔开。
复制代码代码如下所示:
SELECT * FROM `温度`比赛(`焦`)反对(X);
SELECT * FROM `温度`比赛(`焦`)对(A,X);

上面的SQL可以查询所有三个数据

五,分词
正如您在这里看到的,您应该发现字段中的值也是一个分词,不能直接插入原始数据中。
全文索引应用程序:
1。接收数据-数据分段-仓库
2。接收数据-数据分割-查询
现在有一个重要的问题:如何划分数据
在数据分割中,通常采用成熟的、自由的分割系统。如果你有能力,你可以自己做分词系统。在这里,我们推荐使用scws分词插件。
首先下载
1.php_scws.dll注意对应的版本
2.xdb字典文件
三.规则集文件
下载地址

安装和
1。首先要建立一个文件夹,位置不受限制,但最好不要走中文路。
2。规则集文件解压缩{ },把所有的XdB,三的INI文件到D: SCWS
三.复制php_scws.dll到Ext PHP目录下的文件夹
4。添加以下在php.ini结束线:
{和}

请检查设置在php.ini中的extension_dir是正确的,否则,请把extension_dir空,
的php_scws.dll被指定为一个绝对路径。

php_scws.dll延伸=
scws.default.charset = utf8
scws.default.fpath =D: 和
5。重新启动服务器
测试
复制代码代码如下所示:
测试汉语分词;
所以scws_new美元=();
所以美元-> send_text($str);
温度=美元美元,get_result()>;
$ >关闭();
var_dump(合温度);

如果安装不成功,请参阅官方文件。
--------------------------------------------------------------------------------
这样,我们就可以使用全文索引技术。
推荐文章1
广告