Mysql 搜索实现困境:全文与纯SQL
我有一个MySQL/Rails应用程序需要搜索。以下是有关数据的一些信息:Mysql 搜索实现困境:全文与纯SQL,mysql,search,full-text-search,sphinx,Mysql,Search,Full Text Search,Sphinx,我有一个MySQL/Rails应用程序需要搜索。以下是有关数据的一些信息: 用户只在他们自己的数据中搜索,因此搜索范围从用户id开始缩小 每个用户将拥有大约5000条记录(它们会随着时间的推移而累积) 我把一个典型用户的记录写到一个文本文件中。文件大小为2.9 MB 搜索必须包括两列:标题和正文标题是一个varchar(255)列正文为列类型文本 这将被轻轻地使用。如果我平均每秒搜索几次,那将是令人惊讶的 它运行的是一台500MB的CentOS 5VPS机器 我不想要相关性排名或任何模糊性。搜
- 用户只在他们自己的数据中搜索,因此搜索范围从用户id开始缩小
- 每个用户将拥有大约5000条记录(它们会随着时间的推移而累积)
- 我把一个典型用户的记录写到一个文本文件中。文件大小为2.9 MB
- 搜索必须包括两列:
和标题
<代码>标题是一个varchar(255)列<代码>正文为列类型文本正文
- 这将被轻轻地使用。如果我平均每秒搜索几次,那将是令人惊讶的
- 它运行的是一台500MB的CentOS 5VPS机器
- 我不想要相关性排名或任何模糊性。搜索应该是精确的字符串,并可靠地返回包含该字符串的所有记录。简单的日期顺序——从最新到最旧
- 我使用的是InnoDB表类型
我正在开发和维护一个应用程序,该应用程序具有与您类似的搜索功能,到目前为止,纯SQL搜索对我来说非常有效。一两年前,当我第一次实现搜索功能时,我也有类似的性能问题,但我还没有看到任何性能问题。我认为纯SQL搜索不是一个好选择。因为当我们在MySQL中获取文本类型列时,无论缓存设置如何,请求总是落在硬盘上 您只能对非常小的应用程序使用普通SQL搜索
我更喜欢Sphinx。使用MySQL全文搜索大约4年了,现在转到Sphinx,我想说使用全文布尔(即精确)语法的常规MySQL搜索会很好。它的速度很快,它会做你想要的。您在任何时候搜索的数据量都很小 唯一的问题可能是排序结果。当您开始按日期排序时,MySQL的全文搜索可能会变慢,因为这要求您搜索整个表,而不仅仅是它找到的第一个nn结果。这就是我搬到斯芬克斯的最终原因
Sphinx也很棒,所以不要害怕尝试,但听起来您可能不需要额外的功能。为什么我的一天似乎是围绕着——设计、实现、阅读等等——在数据库中搜索文本。。。?