首頁  >  文章  >  後端開發  >  php搜尋功能原理

php搜尋功能原理

藏色散人
藏色散人原創
2019-11-09 09:24:302847瀏覽

php搜尋功能原理

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn