当前位置:  开发笔记 > 编程语言 > 正文

全文是否搜索答案?

如何解决《全文是否搜索答案?》经验,为你挑选了1个好方法。

好的,我有一个看起来像这样的mySQL数据库

ID - 一个int和记录的唯一ID

标题 - 项目的名称

描述 - 项目描述

我想搜索关键词的标题和描述,目前我正在使用.

SELECT*来自'item',其中标题为LIKE%key%

这是有效的,因为在数据库中没有太多,因为搜索"这个键"没有找到"这个关键"我想改进网站的搜索引擎,甚至可能添加某种排名系统对它(但那是很长一段时间).

所以对于这个问题,我听说过一个叫做"全文搜索"的东西(据我所知)是数据库设计的主要内容,但作为这个主题的新手我对此一无所知......

1)你认为它会有用吗?

还有一个问题......

2)我可以阅读有关数据库设计/搜索引擎设计的内容,这些内容将指向正确的方向.

如果它是相关的,该网站目前是用直接的PHP(没有框架的IE)编写的(想到将它转换为Ruby on Rails已经超出我的想法)

更新

谢谢大家,我会去全文搜索.对于后来的任何一个发现,我发现了一个关于全文搜索的好教程.



1> jonstjohn..:

'%keyword%'类型搜索的问题是,即使您在该列上创建索引,也无法在常规表中有效地搜索它.考虑一下如何在电话簿中查找字符串.实际上没有办法优化它 - 你必须扫描整本电话簿 - 这就是MySQL所做的,全表扫描.

如果您将搜索更改为"关键字%"并使用索引,则可以快速搜索.听起来这不是你想要的.

所以考虑到这一点,我使用全文索引/搜索相当多,这里有一些优点和缺点:

优点

非常快

返回按相关性排序的结果(默认情况下,尽管您可以使用任何排序)

可以使用停用词.

缺点

仅适用于MyISAM表

忽略太短的单词(默认最小为4个字母)

在where子句中需要不同的SQL,因此您需要修改现有查询.

与部分字符串不匹配(例如,'word'与'keyword'不匹配,只与'word'匹配)

这里有一些关于全文搜索的好文档.

另一种选择是使用诸如Sphinx之类的搜索系统.它可以非常快速和灵活.它针对搜索进行了优化,并与MySQL完美集成.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有