哪个是在lucene中索引布尔值的最佳选择?

Koe*_*err 16 java lucene

在lucene中索引一个布尔值(true/false)(不需要存储)我希望获得更多的磁盘空间使用和更高的搜索性能

doc.add(new Field("boolean","true",Field.Store.NO,Field.Index.NOT_ANALYZED_NO_NORMS));
//or
doc.add(new Field("boolean","1",Field.Store.NO,Field.Index.NOT_ANALYZED_NO_NORMS));
//or
doc.add(new NumericField("boolean",Integer.MAX_VALUE,Field.Store.NO,true).setIntValue(1));
Run Code Online (Sandbox Code Playgroud)

我该选哪个?还是其他更好的方式?

非常感谢

Adr*_*lon 10

一个有趣的问题!

  • 我认为第三个选项(NumericField)不是布尔字段的好选择.我想不出任何用例.
  • Lucene搜索索引(留给一方存储的数据,你还没有使用)被存储为倒排索引
  • 让你的第一和第二选择(理论上)相同

如果我遇到这种情况,我想我会选择第一种选择("真实"和"虚假"),如果它影响最终决定.

NOT_ANALYZED_NO_NORMS我认为你选择的外观很好.