我有一个表的结构[id - title - tag - ..] 我想实现以下目标:
如果表中有记录标题为“我爱我的工作而且这是我的爱好” 如果提交的查询中包含两个单词,则应选择该句子。例如。查询“爱的爱好”。它应该给我上面的标题,而不是例如“我爱我的工作”。至少句子中有更多单词首先匹配查询关键字,然后是较少的单词。
如何在我桌子的标题栏上进行搜索?
如果解释不明确,我道歉......非常乐意帮助澄清。
谢谢大家
答案 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不支持外键或事务等内容。
答案 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', ' ', '.+ ');