Apache Solr和搜索简单文本文件(不是CSV)


第一天

使用Solr,似乎它接受josn文档系统作为项目。我有一个纯文本文件(26meg),在第一阶段,我只想使用正则表达式进行有效的全文搜索。我找不到将这个简单的 26M 文件导入索引以便开始搜索的好步骤。

Solr 不是为正则表达式搜索而设计的。它专为关键字搜索而设计,具有许多智能功能。类似于您不会使用正则表达式在Google中搜索的方式。

你的问题中更大的问题是你反复提到一个文件。Solr旨在为许多文档编制索引,然后返回与查询匹配的文档

您的一个文件中的文档是什么?如果它只是一个文档,那么索引和搜索它的意义何在?倒推思考更容易:当你使用关键字搜索时,你会得到什么?它应该是 X 的 N 项。因此,X 通常是 Solr 中的单元/文档,您需要决定文件如何映射到该单元/文档。

这应该是一个单独的 - 更具体的 - 问题。

不能为任意 JSON 文件编制索引。它们必须以Solr期望的方式格式化,实际上结构化为要索引的文档列表。

[
 {"id" : "TestDoc1", "title" : "test1"},
 {"id" : "TestDoc2", "title" : "another test"}
]

请参阅 JSON 更新格式。此格式也反映在您的架构.xml中,其中应添加 JSON 文档结构中存在的每个字段的定义(并设置正确的类型/分析器/过滤器/分词器)。

我的第一个想法是:答案应该是什么样子?

正如@AlexandreRafalovitch所写,SOLr 旨在返回您搜索词所在的文档。原因 SOLR 可以使用正则表达式搜索文档或洞察文档。

但是,如果您搜索一个术语,您可以在单个文件中找到该术语,SOLR 将返回一个唯一的文件作为结果,您会有什么好处?

我的情况相同,我需要搜索许多大文档(每个文件1GByte+)。我的解决方案是将大文档拆分为小文档:每页为一个文档。

有一个很大的好处:应用程序能够指出搜索词所在的页面。

因此,在您的情况下,您可以按行拆分文本文件,将每行作为文档进行处理。因此,您可以搜索文档并返回信息,如果该术语存在于哪一行。

顺便说一句:你应该考虑这一点,如果SOLR不是有点超大,以满足你的需求。如果只有一个文档要搜索,只需使用正则表达式解释器(在系统控制台或您喜欢的编程语言上)加载文件将是最简单的方法。

最新更新