没有使用Lucene 7索引的double值

时间:2019-01-17 14:58:24

标签: java lucene

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> 

已存储,但没有看到“已索引”标志。不确定是否是问题所在,因为我以相同的方式对长值进行索引并且搜索正常。

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

为了公平起见,我非常怀疑它是否如您所描述的那样起作用。

其原因如下-所有 Point 类型,包括 DoublePoint 都只是索引字段而不是存储的,因此它们甚至在JavaDoc中都带有注释: / p>

  

用于快速范围滤波器的索引双字段。如果您还需要   存储值,您应该添加一个单独的StoredField实例。

Luke 中看不到任何内容的原因也很简单。 Luke 本身不是魔术,它只能向您显示值(如果已存储)(不是这种情况)。但是,您仍然可以搜索它们,只是无法找回它们。

出于调试/检索的目的,您需要添加另一个存储字段,如下所示:

doc.add(new StoredField(“double_stored”, value));