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

在mysql中搜索大量不断更新的文本,第1张

概述我有一个mysql数据库,其中不断添加大量文本. (每小时10页文本).文本在文本字段中以纯文本格式存储.每行联系一页或两页文本.我需要定期在此数据库上进行全文搜索(在文本中搜索关键字并执行复杂查询).我只需要搜索新添加的文本.但是添加文本可以立即搜索(一两分钟内)非常重要.从我所读到的,使用mysql的全文是非常低效的.我知道lucene是一个选项,但我不

我有一个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中搜索大量不断更新的文本全部内容,希望文章能够帮你解决在mysql中搜索大量不断更新的文本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168600.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存