MySQL PHP在查询中与数据库列匹配单词

时间:2012-07-31 07:03:36

标签: php mysql

我有一个表的结构[id - title - tag - ..] 我想实现以下目标:

如果表中有记录标题为“我爱我的工作而且这是我的爱好” 如果提交的查询中包含两个单词,则应选择该句子。例如。查询“爱的爱好”。它应该给我上面的标题,而不是例如“我爱我的工作”。至少句子中有更多单词首先匹配查询关键字,然后是较少的单词。

如何在我桌子的标题栏上进行搜索?

如果解释不明确,我道歉......非常乐意帮助澄清。

谢谢大家

4 个答案:

答案 0 :(得分:2)

试试这个:

  

SELECT title FROM your_table WHERE title LIKE'%love%'AND title LIKE   '%嗜好%'

答案 1 :(得分:1)

了解mysql内置的full text search功能。在boolean mode中,您可以将查询转换为+love +hobby,并在没有全表扫描的情况下返回结果。请注意,这仅适用于myisam表,可能希望将索引数据移出主表,因为myisam不支持外键或事务等内容。

对于更高级的自由文本索引,您可以尝试sphinx(也有mysql外观界面)或solr

答案 2 :(得分:1)

如果您使用的是MyISAM或innoDB,则可以使用MySQL全文搜索:

SELECT * FROM table_name WHERE MATCH (title) AGAINST ('love hobby' IN BOOLEAN MODE);

它也会搜索单个单词。

阅读本文:https://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

答案 3 :(得分:0)

您也可以使用MySQL REGEXP

SELECT title FROM table WHERE title REGEXP ' love .+ hobby';

如果您将其作为单个字符串,请尝试:

SELECT title FROM table WHERE title REGEXP REPLACE('love hobby', ' ', '.+ ');