Java 带ehcache的倒排索引

Java 带ehcache的倒排索引,java,indexing,ehcache,terracotta,inverted-index,Java,Indexing,Ehcache,Terracotta,Inverted Index,假设我想在一个包含4个唯一单词的文档上创建一个反向索引。 它看起来像word1->document,word2->document,word3->document,word4->document。 使用大小有限的ehcache缓存和terracotta集群,我可以将所有四个关联分别放在缓存中 但我想知道的是: 缓存会保留文档的一个副本,还是会存储其中的四个副本?我猜是四份连载副本(这对我来说是不可取的)。如果这是真的,那么有什么更好的方法可以做到这一点呢?您是正确的,Ehcache中的任何存储层

假设我想在一个包含4个唯一单词的文档上创建一个反向索引。 它看起来像
word1->document,word2->document,word3->document,word4->document
。 使用大小有限的ehcache缓存和terracotta集群,我可以将所有四个关联分别放在缓存中

但我想知道的是:
缓存会保留文档的一个副本,还是会存储其中的四个副本?我猜是四份连载副本(这对我来说是不可取的)。如果这是真的,那么有什么更好的方法可以做到这一点呢?

您是正确的,Ehcache中的任何存储层(内存层除外)都将使用序列化版本,因此您的文档将得到有效复制

正如评论中所建议的,您可以在单词和文档之间添加一定程度的间接性。您也只能在缓存中存储一个ID,并将文档放在其他地方


很明显,对于直接映射,您不应该依赖于对一个映射的文档所做的修改来使其他映射可见。您可能会滥用缓存。

您认为Ehcache中的任何存储层(内存层除外)都将使用序列化版本,因此您的文档将得到有效复制,这是正确的

正如评论中所建议的,您可以在单词和文档之间添加一定程度的间接性。您也只能在缓存中存储一个ID,并将文档放在其他地方


很明显,对于直接映射,您不应该依赖于对一个映射的文档所做的修改来使其他映射可见。你会滥用缓存。

也许映射
word1->docId,word2->docId,word3->docId,word4->docId,docId->document
?(当然在单独的缓存中)也许映射
word1->docId,word2->docId,word3->docId,word4->docId,docId->document
?(当然是分开存放)