Перевернутый индекс с ehcache

Допустим, я хочу создать инвертированный индекс для документа с 4 уникальными словами. Это будет выглядеть как word1 -> document, word2 -> document, word3 -> document, word4 -> document. Используя кеш ehcache ограниченного размера вместе с терракотовым кластером, я могу поместить в кеш все четыре ассоциации по отдельности.

Но вот что меня интересует: будет ли кеш хранить одну копию документа или четыре? Я предполагаю, что это будет четыре сериализованных копии (что нежелательно для моего случая). Если это правда, то как лучше это сделать?


person DebD    schedule 13.05.2020    source источник
comment
Возможно карта word1 -> docId, word2 -> docId, word3 -> docId, word4 -> docId, docId -> document? (в отдельных кешах конечно)   -  person ernest_k    schedule 13.05.2020


Ответы (1)


Вы правы в том, что любой уровень хранения в Ehcache, за исключением уровня в памяти, будет использовать сериализованную версию, и, таким образом, ваш документ будет эффективно дублироваться.

Как предлагается в комментарии, вы можете добавить уровень косвенности между словами и документом. Вы также можете хранить только идентификатор в кеше и оставить документ в другом месте.

Что ясно, так это то, что при прямом сопоставлении вы не должны полагаться на изменения, сделанные в документе одного сопоставления, чтобы они были видны другим сопоставлениям. Вы будете злоупотреблять кешем.

person Louis Jacomet    schedule 15.05.2020