Helli,
我无法使用Lucene 7为双精度值编制索引。 执行完
public void indexDouble(Document document, String name, Double value) {
double val = (double) value;
document.add(new DoublePoint(name, val));
}
我正在用Luke检查索引值,并且该索引的值始终为空。
在文档中添加DoublePoint之后(以我的情况为44),在调试时我可以看到该值已添加
DoublePoint <9xjcl4v4r:vq4ebgph8:44.0> stored<9xjcl4v4r:vq4ebgph8:44.0>
已存储,但没有看到“已索引”标志。不确定是否是问题所在,因为我以相同的方式对长值进行索引并且搜索正常。
有什么想法吗?
谢谢
答案 0 :(得分:1)
为了公平起见,我非常怀疑它是否如您所描述的那样起作用。
其原因如下-所有 Point 类型,包括 DoublePoint 都只是索引字段而不是存储的,因此它们甚至在JavaDoc中都带有注释: / p>
用于快速范围滤波器的索引双字段。如果您还需要 存储值,您应该添加一个单独的StoredField实例。
在 Luke 中看不到任何内容的原因也很简单。 Luke 本身不是魔术,它只能向您显示值(如果已存储)(不是这种情况)。但是,您仍然可以搜索它们,只是无法找回它们。
出于调试/检索的目的,您需要添加另一个存储字段,如下所示:
doc.add(new StoredField(“double_stored”, value));