双精度值未与 Lucene 7 索引



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> 

存储,但我没有看到"索引"标志。不确定这是否是问题所在,因为我以相同的方式索引长值并且搜索正在工作。

有什么想法吗?

谢谢

公平地说,我非常怀疑它是否像你描述的那样工作。

这样做的原因如下 - 所有 Point 类型,包括 DoublePoint 都只是索引字段而不是存储,所以它们甚至在 JavaDoc 中有一个注释说:

用于快速量程滤波器的索引双精度字段。如果您还需要 存储值时,应添加单独的存储字段实例。

你在路加福音中什么也看不见的原因也很简单。卢克本身不是一个魔法,它只能向你显示值,如果它们被存储(事实并非如此)。但是,您仍然可以搜索它们,只是无法检索它们。

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

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

最新更新