我根据pageIds(UniqueKey)索引了Lucene文件。一个文档可以有多个页面。现在,一旦用户执行某些搜索,它就会为我们提供符合搜索条件的页面。
我正在使用Lucene.Net 2.9.2
我们有两个问题......
1-文件大小约为800GB,它有1.3亿行(页面),所以搜索时间非常慢(所有查询都需要超过一分钟(我们一次只能返回有限的行)
为了克服性能问题,我转向SOLR解决了性能问题(这很奇怪,因为我没有使用SOLR提供的任何额外功能,如分片等 - 所以可能是Lucene.NET 2.9.2不是与相同版本的JAVA相比,真的相当于性能?)但现在我有另一个问题...
2-单个“lucene文档”是一页,但我想显示按“真实文档”分组的结果。我应该返回多少结果应该基于“真实文档”而不是“页面”进行配置(这就是我想要向用户展示的内容)。
所以我想说我想要20个'真实文档',并且其中包含符合搜索条件的所有页面(如果一个文档有100页而另一个只有1个则无关紧要。)
从SOLR论坛我可以得到的是它可以通过SOLR-236补丁(现场折叠)来实现,但我无法正确应用补丁(产生很多错误)。
这对我来说真的很不利,而且我没有太多时间,所以有人可以请求将此补丁发送给我的SOLR 1.4.1二进制文件,或者如果有其他方式可以指导我。
我真的很感激。谢谢!
答案 0 :(得分:0)
如果崩溃补丁存在问题,则Solr问题跟踪器是报告它们的渠道。我可以看到other people are currently having some issues with it,所以我建议参与其发展。
说:我建议如果您的应用程序需要搜索“真实文档”,那么围绕这些“真实文档”构建索引,而不是单独的页面。
答案 1 :(得分:0)
如果您的唯一要求是显示页码,我建议您使用荧光笔或进行一些自定义开发。您可以将每个页面的开头和结尾的单词编号存储在自定义结构中,并且知道整个文档中匹配的单词位置,您可以在它出现的页面中知道。如果文档非常大,您将获得良好的性能提升。
答案 2 :(得分:0)
您还可以查看SOLR-1682 : Implement CollapseComponent,我还没有测试过,但据我所知它也解决了崩溃问题。