MySQL FullText搜索?

时间:2009-04-28 06:11:48

标签: mysql database search full-text-search

我正在开发我网站上的搜索功能。我想为用户提供最好的搜索机制。我正在使用PHP / MYSQL。

假设用户搜索“运动”。

我有30个单词“sport”的记录和5个单词“sports”的记录但是当我搜索运动时,接下来的查询只返回具有单词“sport”的结果30。但实际上我认为提供良好搜索结果的最佳方式是显示所有30 + 5记录,所有记录都有运动或运动。

SELECT DISTINCT p.id, p.title, p.descr, p.tags FROM pdata p WHERE MATCH (p.title, p.tags, p.descr) AGAINST ('sport')

请告诉我一些文章或一些提示&使用它的技巧我将能够提供良好的搜索功能。

3 个答案:

答案 0 :(得分:2)

...MATCH (p.title, p.tags, p.descr) AGAINST ('sport*' IN BOOLEAN MODE)

可以做到这一点。

编辑,MySQL documentation是解决这类问题的绝佳资源! :)

答案 1 :(得分:0)

只需在搜索字符串上使用%通配符即可。这将允许搜索字符串形成的任何单词匹配。遗憾的是,您需要处于布尔模式才能使此通配符正常工作。此外,所有搜索字符串必须大于3个字符才能显示使用全文搜索。这可以在mysql系统设置中更改,但默认值为3。

答案 2 :(得分:0)

在您的情况下,我会进行以下查询:

  

SELECT p.id,p.title,p.descr,p.tags   FROM pdata p WHERE(p.title LIKE   '%SPORT%'或p.tags LIKE'%SPORT%'或   p.descr LIKE'%SPORT%')

此查询可以找到任何涵盖运动杂志,夏季运动等的文章。