亲,只收二进制

lucene 或者 es中不存储原字段的应用场景是什么呢???

Lucene | 作者 EricTowns | 发布于2020年07月21日 | 阅读数:2491

学习lucene中发现, Field类几乎都没有存储原字段, 需要手动加一个StoredField
如果我不存储原字段, 那我搜出来的结果岂不是无法看明白? 难道不存储的是一些自增id之类的字段?另外,各位大佬有没有一些lucene的实战小项目推荐啊,小弟想练练手
已邀请:

tacsklet - 公司有用到es

赞同来自:

大兄弟你看的哪个lucene版本,怎么和我看的有点不一样。StringField会索引,有是否存储的选项,StoredField是不做索引只做存储,可以重载。
无论索引和存储都需要空间的,如果不做存储,就省了存储的空间。此字段只做查询,显示需要显示的字段就可以了。
 

Charele - Cisco4321

赞同来自:

索引或存储,可以取其一,或者两个都选。
 
两个都不选,就没有意义,就会报错。
    if (!type.stored() && type.indexOptions() == IndexOptions.NONE) {
      throw new IllegalArgumentException("it doesn't make sense to have a field that "
        + "is neither indexed nor stored");
    }
 
“不存储”,并不是没有任何东西放在里面的,比如"aaa aaa xxx"不存储(它肯定是索引的)
他会分词成3个单词,存到倒排索引表里,key是单词,value就是docId文档号,
这样,你找到"aaa",就可以很快速知道哪些文档里面有aaa这个词了。
 

要回复问题请先登录注册