我有10,000,000条记录,这将是搜索记录的最佳技术,目前我使用全文搜索,但速度很慢,请建议。
答案 0 :(得分:7)
没有一个通用的解决方案,但您可以尝试:
Sphinx
如何实施全文搜索 对于那个超过10万行的表,请保持 加载,并保持相关性? 狮身人面像擅长这些 谜语。
Sphinx是一款全文搜索引擎, 根据GPL第2版分发。 也可提供商业许可证 用于嵌入式使用。
通常,它是一个独立的搜索 引擎,意味着提供快速, 规模效率和相关的全文 搜索其他功能 应用。狮身人面像是特别的 旨在与SQL很好地集成 数据库和脚本语言。 目前内置数据源 支持通过获取数据 直接连接到MySQL或 PostgreSQL,或使用XML管道 机制(管道到索引器) Sphinx特有的基于XML的格式 识别)。
至于名字,Sphinx是一个缩写 正式解码为SQL 短语索引。是的,我知道CMU的 狮身人面像项目。
Lucene PHP (Part of Zend Framework):
Zend_Search_Lucene是一般的 目的文本搜索引擎编写 完全在PHP 5.因为它存储它 文件系统上的索引,但没有 需要一个数据库服务器,它可以添加 几乎任何搜索功能 PHP驱动的网站。在Zend_Search_Lucene 支持以下功能:
- 排名搜索 - 首先返回最佳结果
- 许多强大的查询类型:短语查询,布尔查询,通配符
查询,邻近查询,范围
查询和许多其他人。- 按特定字段搜索(例如,标题,作者,内容)
http://framework.zend.com/ http://framework.zend.com/manual/en/zend.search.lucene.overview.html
答案 1 :(得分:1)
这取决于几个简单的问题:
答案 2 :(得分:0)
因为我没有使用像这样的大型数据集这里有一些可行的想法:
第一个问题是这些记录是静态的(例如geoip)还是没有?
如果您可以提供更多详细信息,我可以改进我的提示。
答案 3 :(得分:0)
使用Solr。它是lucene,可以通过http协议轻松访问。与从mysql进行的任何全文搜索相比,它的速度非常快。