我正在开发一个应用程序,该应用程序需要在桌面应用程序中创建CLucene索引,但是在iOS设备上进行(只读)搜索复制并在索引更新时进行有效更新。
除了在整个索引发生变化时简单地重新下载整个索引之外,我还有什么选择? CLucene本身不支持复制,但Solr(建立在Lucene之上)确实如此,所以显然是可能的。有谁知道Solr如何做到这一点以及如何实现类似的功能?
如果无法做到这一点,是否有任何(非基于Java的)全文搜索实现能够比CLucene更好地满足我的需求?
查询桌面应用程序不是一种选择 - 移动应用程序必须能够离线搜索。
答案 0 :(得分:4)
Lucene索引基于一次写入多次读取段。这意味着当新文档已提交到Lucene索引时,您需要检索的是:
一旦下载了所有这些新文件,就可以安全地删除已合并的段文件。要将更改考虑在内,只需重新打开IndexReader。
Solr有一个Java实现来执行此操作,但考虑到它是多么简单,使用rsync等同步工具也可以做到这一点。顺便说一句,这就是Solr复制在Solr 1.4之前的工作方式,你仍然可以找到some documentation on the wiki about rsync replication。