在mysql中搜索大量不断更新的文本

前端之家收集整理的这篇文章主要介绍了在mysql中搜索大量不断更新的文本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个mysql数据库,其中不断添加大量文本. (每小时10页文本).文本在文本字段中以纯文本格式存储.每行联系一页或两页文本.

我需要定期在此数据库上进行全文搜索(在文本中搜索关键字并执行复杂查询).我只需要搜索添加的文本.但是添加文本可以立即搜索(一两分钟内)非常重要.

从我所读到的,使用MysqL的全文是非常低效的.我知道lucene是一个选项,但我不确定它能以多快的速度索引新文本.

那么我的选择是什么?有没有办法让MysqL更有效率? lucene是我最好的解决方案?什么更合适?

谢谢

最佳答案
我已经为Sphinx&的Indexing Times做了基准测试. Solr的.与Solr相比,Sphinx在索引算法方面遥遥领先(超快速索引时间和小索引大小).

当你说10页文字时,你甚至不需要实时狮身人面像索引.您可以遵循Sphinx中的主要增量索引方案(您可以在Sphinx文档中找到它).这将是超快和近实时的.如果您想获得更多帮助,请随时询问,很高兴向您解释.

Solr很棒,但是当谈到优化的算法Sphinx岩石!!试试狮身人面像.

评论中提出您的问题,Solr / Lucene支持增量索引(在术语中称为delta导入),其安静易于配置,但与Sphinx使用的方法相比,它们相当慢.

主要Delta是足够快的,因为您可以做的是创建一个临时表存储您新的文本并索引它.根据文档:Sphinx支持“实时”(几乎是实时)索引更新,它可以使用
所谓的“主要三角洲”计划.我们的想法是设置两个源和两个索引,其中一个“主”索引用于数据,一个“delta”用于新文档.

例如,您有1000万条记录,因此您可以将其保留为主索引,并将所有新文档添加到将用作增量的新表中.这个新表可以不时编制索引(例如每1小时),并且由于您有10页文本,因此可以在几秒钟内搜索数据.现在,在搜索新记录之后,您可以合并主表delta表的文档,这些文档可以在不干扰您搜索的情况下执行.合并文档后,清空新表,一小时后再次执行整个过程.我希望你有其他的,请随时提出任何问题.

猜你在找的MySQL相关文章