php搜索功能原理-PHP问题

资源魔 31 0

php搜寻性能原理

PHP 搜寻性能的思绪 (分词+婚配)

1. 最简略的搜寻 (行使like语句婚配)

此搜寻只能用于单个单词的搜寻

例如:用户昵称的搜寻,群称号的搜寻等

保举:《PHP教程》

2. 真实的搜寻 (分词+婚配)

这类形式可用于数据段的搜寻,像对文章内容题目进行检索等

原理:

行使 Mysql中的全文搜寻match against

完成步骤

1.应用Mysql全文检索fulltext的先决前提:

表的类型必需是MyISAM (MySQL5.6 后Innodb也能够)

建设全文检索的字段类型必需是char,varchar,text

2.建设全文检索先期设置装备摆设(设置装备摆设mysql)

因为Mysql的默许设置装备摆设是索引的词的长度是4,以是要支持中文单字的话,起首更改这个.

*Unix用户要修正my.cnf,普通此文件正在/etc/my.cnf,假如不找到,先查找一下find / -name ‘my.cnf’

正在 [mysqld] 地位内退出:

ft_min_word_len = 2

其它属性另有

ft_wordlist_charset = gbk

ft_wordlist_file = /home/soft/mysql/share/mysql/wordlist-gbk.txt

ft_stopword_file = /home/soft/mysql/share/mysql/stopwords-gbk.txt

略微诠释一下:

ft_wordlist_charset 示意辞书的字符集, 今朝支持精良的有(UTF-8, gbk, gb2312, big5)

ft_wordlist_file 是词表文件, 每一行包罗一个词及其词频(用若干制表符或空格离开,消岐公用)

ft_stopword_file 示意过滤掉没有索引的词表, 一行一个.

ft_min_word_len 退出索引的词的最小长度, 缺省是 4, 为了支持中文单字故改成 2

3.建设全文检索(表中增加索引)

正在建表顶用FullText要害字标识字段,已存正在的表用 ALTER TABLE (或 CREATE INDEX) 创立索引

CREATE fulltext INDEX index_name ON table_name(colum_name);

4.应用全文检索(SQL语句)

正在SELECT的WHERE字句顶用MATCH函数

全体语法:MATCH(col1,col2,…) AGAINST (expr[search_modifier])。

此中MATCH中的内容为已建设FULLTEXT索引并要从中查找数据的列

AGAINST中的expr为要查找的文本内容,

search_modifier为可选搜寻类型。

search_modifier的可能取值有:

IN NATURAL LANGUAGEMODE、IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION、IN BOOLEAN MODE、WITH QUERY EXPANSION。

search_modifier的每一个取值代表一品种型的全文搜寻,辨别为天然言语全文搜寻、带查问扩大的天然言语全文搜寻、布尔全文搜寻、查问扩大全文搜寻(默许应用IN NATURAL LANGUAGE MODE)。

SELECT * FROM articles WHERE MATCH (tags) AGAINST ('游览' IN BOOLEAN MODE);

以上就是php搜寻性能原理的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题

抱歉,评论功能暂时关闭!