类别:PHP问题 / 日期:2019-11-26 / 浏览:184 / 评论: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搜刮功用道理的细致内容,更多请关注ki4网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章