我以前在某个地方读过这篇文章,但这次没能找到。
我有一个4列的表,如下所示:
+----+------+-------+-------------+
| id | Name | Title | Description |
+----+------+-------+-------------+现在我读到,我们可以结合名称,标题和描述的方式,这样你可以在以后搜索,输出将根据文本的重复排序。
如果我搜索“谁是詹姆斯”
它将在名称、标题和描述中搜索该字符串,并根据该字符串的存在部分或全部返回列中的行。
救命啊!
发布于 2014-03-05 08:18:08
您可以利用MySQL MyISAM全文搜索方法。添加要添加的支持全文搜索的列,如
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发布于 2014-03-05 08:17:51
更好的方法是使用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
发布于 2014-03-05 07:58:43
如果我正确理解了这个问题,最明显的(也可能是最慢的)方法是使用例如:
SELECT * FROM mytable WHERE Name LIKE '%James%' OR Title LIKE '%James%' OR Description LIKE '%James%'https://stackoverflow.com/questions/22191710
复制相似问题