sou*_*php 7 mysql optimization search autocomplete mongodb
我有一个包含5M行的大型数据集.数据集中的一个字段是'article_title',我想实时搜索我正在我网站上构建的自动完成功能.
我一直在尝试使用MySQL和MongoDB作为潜在的数据库解决方案.这两种表现良好时使用索引,例如用于"东西%",但我需要匹配标题中的字符串,如"%%的东西".
使用前瞻性搜索,MySQL和MongoDB使用索引花费0.01秒,使用完整字符串搜索花费约6秒.
我意识到需要扫描整个数据库以进行字符串字符串类型搜索,那么这个问题的常见方法是什么?对于这个问题,Solr和Sphinx似乎有些过分,所以我尽量避免使用它们.
如果我有一个装有2 GB RAM和40GB SSD的盒子(这是我目前能买得起的),我能否获得亚秒响应时间?提前致谢.
-
更新:我尝试了全文索引,虽然结果非常快,但它并不真正满足字符串中的字符串搜索("presiden"与"总统"不匹配).我正在寻找方法来匹配字符串中的字符串与5M行数据集.
对于 MySQL,您可以创建全文索引。简而言之,全文索引通过对每个单词进行索引来使部分文本快速匹配。要创建索引,您可以编写:
alter table YourTable add fulltext index(article_title);
Run Code Online (Sandbox Code Playgroud)
之后,您可以搜索:
select * from YourTable where match(article_title) against ('something');
Run Code Online (Sandbox Code Playgroud)
似乎MongoDB 也有文本索引。我想在任何一种情况下都可以对索引进行微调,因此您必须测试哪种更适合您的情况。
| 归档时间: |
|
| 查看次数: |
5008 次 |
| 最近记录: |