我正在尝试从使用 Lucene 索引的文档中搜索 DOI 字段。DOI 的值类似于“10.1186/1756-3305-7-73”。请原谅我,以防这个问题很愚蠢,但这是我第一次将手浸入 Lucene。
错误是:
[2019-02-05 17:37:18,233] 错误 (ExceptionHandler.java:36) - 字段“doi”在没有位置数据的情况下被索引;无法运行 PhraseQuery (phrase=doi:"10.1186 s12937 015 0065 5") java.lang.IllegalStateException: 字段“doi”没有位置数据被索引;无法运行 PhraseQuery (phrase=doi:"10.1186 s12937 015 0065 5")
问题详情:
- Lucene 版本 - 7
- 查询表达式-doi:"10.1186/1756-3305-7-73"
- 解析查询 - doi:"10.1186 1756 3305 7 73" (注意它删除了正斜杠和连字符)
- 尝试过的分析仪 - 英文分析仪、标准分析仪、简单分析仪
- 用于导航 Lucene 索引的软件 - Luke v7.6.0
不,我没有记错。字段“DOI”的值已使用 Lucene 编制索引。
这是错误的完整日志:
[2019-02-05 17:37:18,233] 错误 (ExceptionHandler.java:36) - 字段“doi”在没有位置数据的情况下被索引;无法运行 PhraseQuery (phrase=doi:"10.1186 s12937 015 0065 5") java.lang.IllegalStateException: 字段“doi”没有位置数据被索引;无法在 org.apache.lucene.search.PhraseQuery$1.getPhraseMatcher(PhraseQuery.java:434) 在 org.apache.lucene.search.PhraseWeight.scorer(PhraseWeight) 运行 PhraseQuery (phrase=doi:"10.1186 s12937 015 0065 5") .java:46) 在 org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:667) 在 org.apache.lucene.Weight.bulkScorer(Weight.java:177) 在 org.apache.lucene。 search.IndexSearcher.search(IndexSearcher.java:471) 在 org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:592) 在 org.apache.lucene。
我确实有一种直觉,这里的错误与解析查询表达式有关。我确实注意到 - 和 / 是从我的原始查询中解析出来的,但我不知道如何解决这个问题。在这件事上的任何方向都将不胜感激。