【问题标题】:Can Lucene, Sphinx (or any other engine) index binary data?Lucene、Sphinx(或任何其他引擎)可以索引二进制数据吗?
【发布时间】:2013-10-03 13:10:36
【问题描述】:

我已经有一个基于 Sql Server 2008 的应用程序在生产中,我通过存储二进制文件(连同文件扩展名)来使用全文搜索。这意味着同一列可以存储 doc、xls、pdf、docx 等。我采用了这种方法(知道插入成本很高),因为我有各种可以上传的文件,我不想遇到从各种类型的文件(xls、xlsx、doc、docx、pdf 等)转换文本的疯狂。我也不知道有任何免费工具可以为我做到这一点。我不想使用文件系统,因为那样不安全而且维护成本很高。

现在我正在寻找迁移到 mysql 的难易程度。在 mysql 中有一些全文搜索的选项 例如:MySql 全文 搜索(不索引二进制)、Sphinx 和 Solr。

我发现了这个Question,它最接近我的需要...虽然我猜 Sphinx 不会索引二进制数据...但是,通过使用 SphinxSE,我可以查询 mysql 表和 Sphinx 以获取相关结果集(在同一连接中)。我希望理解是正确的。但我不确定性能。 有人可以补充更多见解吗?

据我所知... 将 Lucene 与 Mysql 集成是很困难的。

我需要根据可以结构化(存储在 RDBMS 中)和非结构化(文本数据 应编入索引)。

另外,有没有其他选项看起来更适合我的特定情况。

【问题讨论】:

    标签: mysql solr lucene sphinx


    【解决方案1】:

    看看 ElasticSearch(在引擎盖下使用 lucene,如 Solr)我认为它可以满足您的要求我不需要文档索引虽然所以没有尝试过。

    更多信息请看这里

    http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-attachment-type.html

    它使用 Apache Tika 将文档转换为可索引的内容(与 SQL Server 使用 IFilter 插件所做的一样)

    【讨论】:

    • 你证实了我的想法,我确实和我的一个朋友讨论过,他也提出了同样的建议......实际上它(几乎)正是 Sql Server 文本搜索的工作原理。现在剩下的唯一问题是与MySql集成,这是一个好主意吗?用于结合结构化和文本搜索。或者,您建议将所有数据以结构化格式存储并通过弹性搜索进行索引?估计也是可以的。只是这将是插入/更新繁重的......我也在考虑进行彻底的转变并转移到 Mongo DB,我希望弹性搜索也能很好地整合它。
    • 您添加到 ElasticSearch 的文档应该包含反向引用,但通常您将可能需要的所有内容作为单独的字段索引到同一文档中。所以理论上你不需要反向链接到现有数据。但是,如果您确实需要像 SphinxSE 那样合并结果,您可以在每页的页面上执行此操作,但不能完全连接。
    • 抱歉错过了您的一些评论。使用河流支持 mongodb github.com/richardwilly98/elasticsearch-river-mongodb
    • 感谢您提供的所有信息...我相信这是我 POC 的良好开端...此外,MongoDB 是否会为时过早而无法迁移?虽然我看到很多公司在生产中使用 MongoDB。
    • 我必须在 MongoDB 上做这些测试我自己我也将设置一个 MongoDB + ElasticSearch 环境。但是 MongoDB 已经准备好生产,所以我认为没有理由不在 POC 环境中进行测试,这就是 POC 的用途;)
    猜你喜欢
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多