apache solr和搜索简单的文本文件(不是csv)

时间:2015-01-03 21:23:23

标签: solr full-text-search

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

3 个答案:

答案 0 :(得分:1)

Solr不适用于正则表达式搜索。它专为关键字搜索而设计,具有很多功能,可以很聪明。与使用正则表达式在Google中搜索的方式类似。

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

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

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

答案 1 :(得分:0)

您无法索引任意JSON文件。它们必须按照Solr期望的方式进行格式化,实际上结构化为要索引的文档列表。

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

The JSON Update Format。此格式也反映在schema.xml中,其中应添加JSON文档结构中存在的每个字段的定义(并设置正确的类型/分析器/过滤器/标记器)。

答案 2 :(得分:0)

我的第一个想法是:答案应该如何?

正如@AlexandreRafalovitch所写,SOLr旨在返回您存在搜索词的文档。因为SOLR可以通过文档搜索或使用regexp查看文档。

但是如果你搜索一个术语,你可以在你的单个文件中找到一个术语,SOLR会返回一个唯一的文件作为结果吗?

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

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

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

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