我开始之前,这里是数据库的样本格式:在一列中搜索多个值的mysqli,返回匹配另一列,按出现次数排序?
id date title content
--------------------------------------------------------------
1 YYYY-MM-DD some text here lots of stuff to search here
2 YYYY-MM-DD some text here lots of stuff to search here
3 YYYY-MM-DD some text here lots of stuff to search here
目前,我有一些设置以获得行的id,然后指定的日期,标题和内容,PHP变量显示在一个页面上的不同地方(这是一个博客,这些是帖子)。
现在我试图做一个函数来搜索数组中每个字符串的内容(代码已经将输入到搜索框中的单词按空格分割成一个数组,因此输入cat hotdog suit
将给出[0]cat [1]hotdog [2]suit
)。
我有一个循环设置一个在每个字符串进行查询:
foreach ($queryArray as $queryArrayString) {
// query the content column for $queryArrayString
}
不过,我想不出我应该使用什么样的查询,找到后,该字符串的ID发生在。我想将它分配给一个变量($results
)。 扭转阵列,因此更高的IDS(更新结果)显示第一后,我想找到每个ID的标题,并将其存储这样的:
id (let's say it is 3) => matching title
id (let's say it is 1) => matching title
这可能吗?我已经尝试了几种不同的查询,但都没有成功,但是花了2分钟和大量内存来尝试。
任何帮助,将不胜感激。
编辑:我创建了标题和内容列的文本索引(我想要同时搜索),如this image所示。
可以搜索吗?就像我在评论中所说的那样,我只是需要它以某种方式返回相应的ID和标题。 (结果链接文本的标题,链接目标的标识为<a href="blog?p=[id]">[title]</a>
是我正在使用的格式
你可以使用MySQL'LIKE'条件:'SELECT * FROM your_posts在内容LIKE '%firstword%' AND内容LIKE'%secondword%''等 –
听起来好像你需要在你的表中实现全文搜索。阅读MySQL文档:http://dev.mysql.com/doc/refman/5.5/en /fulltext-search.html – Barmar
否则,用'LIKE'搜索大量文本将会非常缓慢。 – Barmar