gpt4 book ai didi

java - 是否有可能在Java中使用Lucene 3.0获得按频繁更新字段排序的实时搜索结果

转载 作者:行者123 更新时间:2023-11-30 06:38:42 24 4
gpt4 key购买 nike

考虑以下假设:

  1. 我有 Java 5.0 Web 应用程序,我正在考虑使用 Lucene 3.0 进行全文搜索
  2. 会有超过1000K的Lucene文档,每个100字(平均)
  3. 新文档必须在创建后立即可搜索(实时搜索)
  4. Lucene 文档经常更新名为 quality 的整型字段

哪里可以找到 Lucene 3.0 的近实时搜索的代码示例(简单但尽可能完整)?

是否有可能获得按可能经常更新的文档字段(质量)之一排序的查询结果(对于已经索引的文档)?文档字段的这种更新将不得不触发 Lucene 索引重建?这种重建的表现是什么?如何有效地完成它 - 我需要一些完整解决方案的示例/文档。

但是,如果在这种情况下不一定需要重建索引——如何有效地对搜索结果进行排序?可能有查询返回大量文档(>50K),所以我认为从 Lucene 中获取未排序的文档,然后按质量字段对它们进行排序,最后将排序后的列表分页进行分页,效率不高。

Lucene 3.0 是我在 Java 中的最佳选择还是我应该考虑其他一些框架/解决方案?也许是 SQL Server 本身提供的全文搜索(我使用的是 PostgreSQL 8.3)?

最佳答案

Lucene API 能够满足您的所有要求,但这并不容易。这是一个相当低级的 API,让它做复杂的事情本身就是一项练习。

我强烈推荐Compass ,这是一个建立在 Lucene 之上的搜索/索引框架。除了更加友好的 API 之外,它还提供诸如对象/XML/JSON 映射到 Lucene 索引的功能,以及完全事务性的行为。它应该可以满足您的要求,例如对交易更新的文档进行实时排序。

Compass 2.2.0 构建于 Lucene 2.4.1 之上,但基于 Lucene 3.0 的版本正在开发中。不过,它从 Lucene API 中充分抽象出来,因此过渡应该是无缝的。

关于java - 是否有可能在Java中使用Lucene 3.0获得按频繁更新字段排序的实时搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2033457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com