我最近开始学习solr,对我来说有些事情仍然难以理解,我将解释我正在尝试做的事情,请告诉我要走的路。
我需要一个Web应用程序,可以在其中保存数据,某些字段以文本形式保存,某些字段以文件形式保存,如何以文本形式添加字段是可以理解的,无法添加文件或其内容为文本,在这种情况下,我不知道文件本身存储在哪里?
如果您需要找到一个文件,并且整个文件中只有几个单词,我希望所有出现这些单词的文件都出现,在这种情况下是否应该添加一个单独的数据库?如果是这样,文件存储在哪里?如果不是,则是相同的问题。
我会很高兴并且可以理解某些示例,也许您有链接?
答案 0 :(得分:1)
这太宽泛且不够具体,无法给出您可以实施的答案;通常,您需要将文档和ID一起提交给Solr(through Tika in the Extracting Request Handler / Solr Cell)。
文档本身必须存储在其他地方,因为Solr不会为您处理文档存储。它们可以存储在云服务,网络驱动器或本地磁盘上-这取决于您的Web应用程序。
然后,您的应用程序将接收来自用户的文件,存储一个将文件分配给用户的数据库行,将文件存储在某个名称(通常为该行的ID)下的某处(S3 / GoogleCloudStorage / Local路径)从数据库),然后将内容与元数据(例如用户ID)和文件ID一起提交给Solr进行索引。
搜索后会返回ID,您可以从存储文档的任何地方检索该文档。
答案 1 :(得分:0)
由于MatsLindh已经提到了一种实现所需内容的方法。
您可以通过以下步骤索引位置已知的文件。
用以下几行更新solrConfig.xml
<!-- Load Data Import Handler and Apache Tika (extraction) libraries -->
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar"/>
<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar"/>
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">tika-data-config.xml</str>
</lst>
</requestHandler>
在tika-data-config.xml
文件夹下创建一个名为G:\Solr\TikaConf\conf
的文件。具有以下配置。这个位置可能与您不同。
<dataConfig>
<dataSource type="BinFileDataSource"/>
<document>
<entity name="file" processor="FileListEntityProcessor" dataSource="null"
baseDir="G:/Solr/solr-7.7.2/example/exampledocs" fileName=".*xml"
rootEntity="false">
<field column="file" name="id"/>
<entity name="pdf" processor="TikaEntityProcessor"
url="${file.fileAbsolutePath}" format="text">
<field column="text" name="text"/>
</entity>
</entity>
</document>
</dataConfig>
在您的schema.xml
<field name="text" type="text_general" indexed="true" stored="true" multiValued="false"/>
如下更新solrConfig xml文件以禁用无模式模式
<!-- The update.autoCreateFields property can be turned to false to disable schemaless mode -->
<updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:false}"
processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date,add-schema-fields">
<processor class="solr.LogUpdateProcessorFactory"/>
<processor class="solr.DistributedUpdateProcessorFactory"/>
<processor class="solr.RunUpdateProcessorFactory"/>
</updateRequestProcessorChain>
转到solr admin页面并选择您创建的核心,然后单击数据导入。
一旦数据被导入或建立索引,您可以通过查询对其进行验证。
如果文件位置是动态的,则意味着您正在从数据库中检索文件位置,然后这将是您的第一个实体,该实体从数据库中检索有关文件元数据的信息,例如ID,名称,作者和文件路径等等。在第二个实体TikaEntityProcessor中,传递文件路径并获取索引文件的内容...