【问题标题】:Quick implementation for very large indexed text search?快速实现非常大的索引文本搜索?
【发布时间】:2014-08-07 05:30:34
【问题描述】:

我有一个大约 500GB 的文本文件(即一个非常大的日志文件),我想构建一个实现来快速搜索它。

到目前为止,我已经使用 SQLite 数据库创建了自己的倒排索引,但这并不能很好地扩展。

谁能推荐一个相当简单的实现来快速搜索这个庞大的文档?

我看过 Solr 和 Lucene,但这些看起来太复杂了,无法快速解决,我认为具有内置全文索引(MySQl、Raven、Mongo 等)的数据库可能是最简单的解决方案,但没有体验一下。

【问题讨论】:

  • 这个文件能装进搜索机器吗?您最终是否需要将其拆分为多个部分?

标签: mysql mongodb solr lucene indexing


【解决方案1】:

由于您正在查看日志文件的文本处理,因此我将仔细查看 Elasticsearch Logstask Kibana 堆栈。 Elasticsearch 提供基于 Lucene 的文本搜索。 Logstash 解析日志文件并将其加载到 Elasticsearch 中。 Kibana 提供了用于搜索和分析数据的可视化和查询工具。

这是他们的一位培训师关于 ELK 堆栈的一个很好的网络研讨会:http://www.elasticsearch.org/webinars/elk-stack-devops-environment/

作为一名经验丰富的 MongoDB、Solr 和 Elasticsearch 用户,我印象深刻的是,将所有三个组件都启动起来并进行功能分析日志数据是多么容易。它还有一个强大的用户社区,无论是在 stackoverflow 上还是在其他地方。

你可以在这里下载:http://www.elasticsearch.org/overview/elkdownloads/

【讨论】:

  • 在查看了几个选项后,我决定使用 ELK 堆栈。有兴趣的任何人都可以在logwrangler.mtcode.com
【解决方案2】:

将日志文件转换为 csv,然后将 csv 导入 mysql、mongodb 等。

mongodb:

寻求帮助:

mongoimport --help

json 文件:

mongoimport --db db --collection collection --file collection.json

csv 文件:

mongoimport --db db--collection collection --type csv --headerline --file collection.csv

使用“--ignoreBlanks”选项忽略空白字段。对于 CSV 和 TSV 导入,此选项在大多数情况下提供了所需的功能:它避免在 MongoDB 文档中插入空白字段。

链接指南: mongoimport , mongoimport v2.2

然后在集合上定义索引并享受:-)

【讨论】:

  • 不确定这将如何比他当前的系统提供很多好处,特别是如果他的工作集由于他的查询而为 500GB。
  • 我喜欢 mongodb,但在这种特殊情况下(我认为是词干)导致启用全文索引的完全匹配问题
猜你喜欢
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
  • 2015-03-20
  • 1970-01-01
相关资源
最近更新 更多