2012-07-31 62 views
0

我有一个表[ID - 标题 - 标签 - ..]以下结构 我要实现以下目标:查询MySQL的PHP​​的比赛的话与数据库列

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

我该如何在我的表的标题栏上进行此项搜索?

如果解释不清楚,我很抱歉...超过乐意澄清。

谢谢大家

回答

2

试试这个:

SELECT歌名FROM your_table WHERE标题LIKE '%爱情%' 和标题LIKE '%嗜好%'

+0

以及我给的关键字就是一个例子...所以我假设我将与$关键字1和$ 1关键字替换它们....但这个实现我真正需要的即识别两个关键字出现在标题前面并且存在一个关键字? – 2012-07-31 07:08:16

+0

只会显示“**”**和**爱好**中的值。 – Raptor 2012-07-31 07:10:49

+0

aha,如果我希望只包含其中一个标题,那该怎么办?我想在匹配两个关键字后显示它们。顺便说一句,如果我不知道插入关键字的数量? – 2012-07-31 07:12:31

0

你也可以使用MySQL REGEXP

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

如果y你有它作为单个字符串然后尝试:

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

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

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