请问lucene在用于搜索数据库内容的时候,索引是怎么做的,比如建立了索引,但是库中内容发生了变化,还能通过lucene的索引搜索吗?还是要重新建立索引?
请问lucene在用于搜索数据库内容的时候,索引是怎么做的,比如建立了索引,但是库中内容发生了变化,还能通过lucene的索引搜索吗?还是要重新建立索引?
Lucene建立的索引结构不适合进行更新和删除操作。对于更新Lucene采用先将原有索引删除,再重新建立索引的方式。
删除的方式是软删除,即在liveDoc中将该文档标记为删除。而实际删除文档的操作,会在Segment合并的时候进行。
https://www.elastic.co/cn/blog/lucenes-handling-of-deleted-documents
尽量避免更新或者删除文档的操作
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
用Lucene索引数据库,其实就是将数据库中需要被索引的数据取出来,建立Lucene document.如果库中的内容发生变化,这个内容也被lucene建立了document, 那么就需要同步更新到Lucene document中了。同步的机制可以使用队列等方式,一般建议不要对频繁改动的内容做索引。