2010-08-12 40 views
1

我有根据pageIds(UniqueKey)索引的Lucene文件。一个文档可以有多个页面。现在,一旦用户执行一些搜索,它会给我们提供符合搜索条件的页面如何在Solrnet/Solr(Lucene)中实现分组?

我使用Lucene.Net 2.9.2

我们有2个问题...

1的文件大小为800GB左右,它拥有130万行(页)所以搜索时间真的很慢(所有查询花费的时间超过了一分钟)(我们只需要一次返回有限的行)

为了克服性能问题,我转移到SOLR解决了性能问题(这很奇怪,因为我没有使用SOLR提供的任何额外的功能,比如分片等 - 所以Lucene.NET 2.9.2并不等同于性能比较器红色到相同版本的JAVA ??)但现在我有另一个问题...

2-单个'lucene文档'是一页,但我想显示结果''真实文档'分组。我应该返回多少结果应该基于“真实文档”而不是“页面”进行配置(因为我想向用户展示这些内容)。

因此,我们可以说我想要20个'真实文档'以及它们中与搜索条件相匹配的所有页面(如果一个文档有100页而另一个文档只有1个,则无关紧要)。

从我可以从SOLR论坛得到的是,它可以通过SOLR-236补丁(字段崩溃)来实现,但是我还没有能够正确地将补丁应用于trunk(提供很多错误)。

这对我来说真的很重要,我没有太多时间,所以有人可以给我发送SOLR 1.4.1二进制文件,如果有任何其他方式,请使用此补丁或引导我。

我真的很感激它。谢谢!!

回答

0

如果您遇到了崩溃补丁问题,那么Solr问题跟踪器就是要报告它们的渠道。我可以看到other people are currently having some issues with it,所以我建议参与其发展。这就是说:我建议如果你的应用程序需要搜索'真实文档',那么围绕这些'真实文档'建立你的索引,而不是他们各自的页面。

+0

@ Mauricio Scheffer:实际上这是我们的要求,我们需要显示查询匹配的页码。 – 2010-08-12 15:03:54

0

如果你唯一的要求是显示页码,我会建议玩荧光笔或做一些定制开发。您可以将每个页面的开头和结尾的单词编号存储在自定义结构中,并且知道整个文档中匹配的单词位置,您可以知道它出现的页面。如果文件非常大,您将获得良好的性能改进。