好的,我有一个看起来像这样的mySQL数据库
ID - 一个int和记录的唯一ID
标题 - 项目的名称
描述 - 项目描述
我想搜索关键词的标题和描述,目前我正在使用.
SELECT*来自'item',其中标题为LIKE%key%
这是有效的,因为在数据库中没有太多,因为搜索"这个键"没有找到"这个关键"我想改进网站的搜索引擎,甚至可能添加某种排名系统对它(但那是很长一段时间).
所以对于这个问题,我听说过一个叫做"全文搜索"的东西(据我所知)是数据库设计的主要内容,但作为这个主题的新手我对此一无所知......
1)你认为它会有用吗?
还有一个问题......
2)我可以阅读有关数据库设计/搜索引擎设计的内容,这些内容将指向正确的方向.
如果它是相关的,该网站目前是用直接的PHP(没有框架的IE)编写的(想到将它转换为Ruby on Rails已经超出我的想法)
更新
谢谢大家,我会去全文搜索.对于后来的任何一个发现,我发现了一个关于全文搜索的好教程.
'%keyword%'类型搜索的问题是,即使您在该列上创建索引,也无法在常规表中有效地搜索它.考虑一下如何在电话簿中查找字符串.实际上没有办法优化它 - 你必须扫描整本电话簿 - 这就是MySQL所做的,全表扫描.
如果您将搜索更改为"关键字%"并使用索引,则可以快速搜索.听起来这不是你想要的.
所以考虑到这一点,我使用全文索引/搜索相当多,这里有一些优点和缺点:
优点
非常快
返回按相关性排序的结果(默认情况下,尽管您可以使用任何排序)
可以使用停用词.
缺点
仅适用于MyISAM表
忽略太短的单词(默认最小为4个字母)
在where子句中需要不同的SQL,因此您需要修改现有查询.
与部分字符串不匹配(例如,'word'与'keyword'不匹配,只与'word'匹配)
这里有一些关于全文搜索的好文档.
另一种选择是使用诸如Sphinx之类的搜索系统.它可以非常快速和灵活.它针对搜索进行了优化,并与MySQL完美集成.