我不熟悉lucene。最近我有机会参与他们正在从旧的lucene版本2.4.1移动到 6.2.1 的工作。
在使用新版本6.2.1运行时,我们在搜索时遇到异常:
查询字段中的异常" field_name"被索引没有位置数据;无法运行SpanTermQuery(term = 2887629129)**
在代码中,字段创建如下:
doc.add(new Field("field_1", "field_value", StringField.TYPE_STORED));
最后我们尝试了如下:
FieldType type = new FieldType();
type.setStored(true);
type.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
doc.add(new Field("field_1", "field_value", StringField.TYPE_STORED));
通过上述更改,之前的错误消失了,但我们没有收到任何搜索结果,结果为空。
答案 0 :(得分:0)
鉴于您使用的是SpanQuery,我假设您希望分析该字段。没有分析的StringField个索引作为单个标记。您需要使用TextField。
doc.add(new Field("field_1", "field_value", TextField.TYPE_STORED));
此处无需设置IndexOptions,默认设置为DOCS_AND_FREQS_AND_POSITIONS
。