搜索索引复制

时间:2012-03-20 19:38:24

标签: lucene full-text-search replication clucene

我正在开发一个应用程序,该应用程序需要在桌面应用程序中创建CLucene索引,但是在iOS设备上进行(只读)搜索复制并在索引更新时进行有效更新。

除了在整个索引发生变化时简单地重新下载整个索引之外,我还有什么选择? CLucene本身不支持复制,但Solr(建立在Lucene之上)确实如此,所以显然是可能的。有谁知道Solr如何做到这一点以及如何实现类似的功能?

如果无法做到这一点,是否有任何(非基于Java的)全文搜索实现能够比CLucene更好地满足我的需求?

查询桌面应用程序不是一种选择 - 移动应用程序必须能够离线搜索。

1 个答案:

答案 0 :(得分:4)

Lucene索引基于一次写入多次读取段。这意味着当新文档已提交到Lucene索引时,您需要检索的是:

  • 新细分
  • 合并的细分(已在单个细分中合并的旧细分,如果有的话),
  • 段文件(存储有关当前段的信息)。

一旦下载了所有这些新文件,就可以安全地删除已合并的段文件。要将更改考虑在内,只需重新打开IndexReader。

Solr有一个Java实现来执行此操作,但考虑到它是多么简单,使用rsync等同步工具也可以做到这一点。顺便说一句,这就是Solr复制在Solr 1.4之前的工作方式,你仍然可以找到some documentation on the wiki about rsync replication