【问题标题】:How to index documents with their metadata in a DB using Solr 5.1.0如何使用 Solr 5.1.0 在数据库中索引文档及其元数据
【发布时间】:2015-06-10 16:05:21
【问题描述】:

我正在使用 Apache Solr 为搜索引擎索引文档。这些文档本地存储在我的文件系统上。为了进行多面搜索,我还必须包含存储在 MySQL DB 中的这些文档元数据。

有没有办法在文件系统中同时索引这些文档,同时从数据库中附加/索引它们相应的元数据以进行分面搜索?

如果不是,还有什么选择?在此先感谢

【问题讨论】:

  • 您在 Solr 上究竟索引了什么?只是文件系统中的文档文件位置?
  • 我正在索引一个目录的所有内容(所有文件及其内容,还包括文件路径)。
  • 简短的回答是您使用语言或您的选择编写一个简单的代理(希望不是 php)。想要长答案?
  • 是的,我会回答很长的

标签: mysql solr


【解决方案1】:

我并不是说 Drew 的回答不正确,但我发现有更直接的方法可以解决这个问题。

经过几天的搜索并在 Lucene 论坛上发帖,我能够对这个问题提出一个非常全面的答案。如果您想索引数据库和文件系统并让他们为文件及其元数据提交一份综合文档,有两种方法可以解决。一个比另一个好。

第一种方法是配置 DataImportHandler,或 DIH。这涉及更改 solrconfig.xml 以启用 DIH,然后您需要在您正在使用的核心的 conf 目录中创建一个新的 .xml 文件。这使您能够

1) 挖掘多个数据源 2) 使用数据库中的数据在文件系统中查找文件。 IE 在这种情况下是文件路径。

此链接将帮助您配置多个数据源并了解 DIH 的功能

Data Import Handler Documentation

此链接将帮助您设置 DIH 并将其连接到数据库。我建议看两个部分。

Configuring the data import handler and connecting it to a database

这是我最终的 DIH 配置文件供参考

<dataConfig> 
  
      <dataSource name="ds-db" type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://localhost:3306/EDMS_Metadata" 
                  user="root" 
                  password="*************" /> 
     
      <dataSource name="ds-file" type="BinFileDataSource"/> 
     
       <document name="doc1"> 
            <entity name="db-data" 
                    dataSource="ds-db" 
                    onError="skip" 
                    query="select TextContentURL as 'id', Title, AuthorCreator from MasterIndex" > 
              
            <field column="TextContentURL" name="id" /> 
              
            <field column="Title" name="title" /> 
              
        <field column="AuthorCreator" name="author" /> 
              
            <entity name="file" 
                    dataSource="ds-file" 
                    onError="skip" 
                    processor="TikaEntityProcessor" 
                    url="${db-data.id}" 
                    format="text">
              
             <field column="text" name="text" />  
              
             </entity>
              
        </entity> 
         
      </document> 
  
    </dataConfig>

使用大型 PDF 时请注意,这会使 Solr 变慢并最终可能会杀死它。这是因为您正在处理 Solr 中的文档,它会杀死 Tika 。这就是为什么我最终无法使用这种方法,这导致我向那些索引丰富文档的人推荐下一种方法。

您必须创建自己的索引器。我使用了一个叫做 SolrJ 的东西。它是一个 Java API,可让您访问 Solr。详细介绍将花费太长时间,但这里有一个 SolrJ 骨架的链接,该骨架用于单独索引文件系统和数据库。我能够将它们结合起来,使用数据库中的元数据集和文件系统中的文件创建单个 Solr 文档。我更喜欢这个,因为它处理速度很快,让我可以更好地控制我的领域。

这是骨架教程的链接。祝你好运。希望这会有所帮助。

Indexing a file system and database using SolrJ

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 2014-10-22
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    相关资源
    最近更新 更多