2014-03-05 130 views
1

我以前在某處閱讀過這方面的內容,但是這次沒有找到它。MySQL搜索算法

我有4個列的表如下:

+----+------+-------+-------------+ 
| id | Name | Title | Description | 
+----+------+-------+-------------+ 

現在我讀了,我們可以以這樣的方式,你可以在以後搜索和輸出將根據排序相結合的名稱,標題和說明對文字重複。

對於例如:如果我搜索「誰是詹姆斯」

它將搜索它的名稱,標題和說明,並返回基於此字符串的存在部分或全部列中的行。

請幫忙!!!

回答

1

您可以利用MySQL MyISAM Full TEXT搜索方法。 添加列要添加支持全文搜索像

ALTER TABLE mytable ADD FULLTEXT(Name,Title,Description); 

現在最匹配的字符串,例如搜索這些列順序的任何查詢:

 SELECT *, 
      MATCH(Name,Title,Description) AGAINST('$keyword') AS score 
     FROM mytable 
     WHERE MATCH(Name,Title,Description) AGAINST('$keyword') 
     ORDER BY score DESC 
0

如果我理解正確的問題,最明顯的(也可能是最慢)的方法是使用像,例如:

SELECT * FROM mytable WHERE Name LIKE '%James%' OR Title LIKE '%James%' OR Description LIKE '%James%' 
2

一個更好的辦法是使用全文搜索功能從MySQL,你的情況一點的例子是:

//Alter the table to add full text index 
ALTER TABLE user ADD FULLTEXT keyword (name, title, description) 

//Perform the query like this 
SELECT * FROM user MATCH (name, title, description) AGAINST 
('Who is james' IN NATURAL LANGUAGE MODE) 

更多參考,請參閱文檔:

https://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html