Mysql高级搜索

时间:2013-11-04 18:33:48

标签: php mysql full-text-search

有人可以使用PHP帮助我使用MySQL中的一些高级搜索功能吗?

我需要在特定字段(标题,说明)中执行搜索,并且某些特殊字符可用作:

  • 以给定文本开头的几个单词(例如,搜索词是'north *',应该返回包含北方,西北等的条目。)
  • 排除单词(例如搜索字词为'vacation -bahamas',应该返回包含休假的条目,但不包含那些也包含巴哈马的条目)

2 个答案:

答案 0 :(得分:2)

您可能需要更专业的搜索技术。查看Sphinx Search

许多开发人员在MySQL中存储数据,然后使用像Sphinx Search这样的搜索引擎作为伴随技术来索引数据并有效地进行搜索。

使用正确的工具完成工作。

答案 1 :(得分:0)

我有点不清楚你在问什么。如果您想自己实现这个以在PHP中实现特定功能,那么这里是您需要的SQL知识:

SELECT * FROM table
WHERE title LIKE '%north%'

这会找到标题中包含'north'的所有条目

SELECT * FROM table W
HERE title LIKE 'north%'

这会找到标题以'north'开头的所有条目

SELECT * FROM table W
WHERE (title LIKE 'north %' OR title LIKE '% north %' OR title LIKE '% north')

这将查找标题包含单词north

的所有条目
SELECT * FROM table 
WHERE (description LIKE '% vacation %' OR description LIKE 'vacation %' OR description LIKE '% vacation')
AND (description NOT LIKE '% bahamas %' AND description NOT LIKE 'bahamas %' AND description NOT LIKE '% bahamas')

这将找到描述中包含“vacation”一词的所有条目,而不是“bahamas”一词

但是,如果您需要更复杂(处理不区分大小写的查询),强大或有效的解决方案,请使用Bill Karwin的答案。