Java 是什么原因引起的&书信电报;字段>;无位置数据索引”;Lucene使用Luke时出错?

Java 是什么原因引起的&书信电报;字段>;无位置数据索引”;Lucene使用Luke时出错?,java,lucene,luke,Java,Lucene,Luke,我试图从使用Lucene索引的文档中搜索DOI字段。DOI的值类似于“10.1186/1756-3305-7-73”。请原谅,如果这个问题很愚蠢,但这是我第一次把手伸进Lucene 错误是: [2019-02-05 17:37:18233]错误(ExceptionHandler.java:36)-字段“doi”被索引,没有位置数据;无法运行短语查询(短语=doi:“10.1186 s12937 015 0065”) java.lang.IllegalStateException:字段“doi”被

我试图从使用Lucene索引的文档中搜索DOI字段。DOI的值类似于“10.1186/1756-3305-7-73”。请原谅,如果这个问题很愚蠢,但这是我第一次把手伸进Lucene

错误是:

[2019-02-05 17:37:18233]错误(ExceptionHandler.java:36)-字段“doi”被索引,没有位置数据;无法运行短语查询(短语=doi:“10.1186 s12937 015 0065”) java.lang.IllegalStateException:字段“doi”被索引,没有位置数据;无法运行短语查询(短语=doi:“10.1186 s12937 015 0065”)

问题详情:

  • Lucene版本-7
  • 查询表达式-doi:“10.1186/1756-3305-7-73”
  • 解析查询-doi:“10.118617563305773”(注意,它删除了正斜杠和连字符)
  • 分析仪-英语分析仪、标准分析仪、简单分析仪
  • 用于导航Lucene索引的软件-Luke v7.6.0
不,我没有弄错。字段“DOI”的值已使用Lucene编制索引

以下是错误的完整日志:

[2019-02-05 17:37:18233]错误(ExceptionHandler.java:36)-字段“doi”被索引,没有位置数据;无法运行短语查询(短语=doi:“10.1186 s12937 015 0065”) java.lang.IllegalStateException:字段“doi”被索引,没有位置数据;无法运行短语查询(短语=doi:“10.1186 s12937 015 0065”) 位于org.apache.lucene.search.PhraseQuery$1.getPhraseMatcher(PhraseQuery.java:434) 在org.apache.lucene.search.PhraseWeight.scorer上(PhraseWeight.java:46) 位于org.apache.lucene.search.Weight.bulkScorer(Weight.java:177) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:667) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:471) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:592) 位于org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:447) 在org.apache.lucene.luke.models.search.SearchImpl.search(SearchImpl.java:283)上 在org.apache.lucene.luke.models.search.SearchImpl.search(SearchImpl.java:273) 位于org.apache.lucene.luke.app.desktop.components.SearchPanelProvider.doSearch(SearchPanelProvider.java:516) org.apache.lucene.luke.app.desktop.components.SearchPanelProvider.access$500(SearchPanelProvider.java:93) 位于org.apache.lucene.luke.app.desktop.components.SearchPanelProvider$ListenerFunctions.execSearch(SearchPanelProvider.java:672) 在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:402) 在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:259) 在javax.swing.plaf.basic.BasicButtonListener.MouseRelease(BasicButtonListener.java:252) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6539) 位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3324) 位于java.awt.Component.processEvent(Component.java:6304) 位于java.awt.Container.processEvent(Container.java:2239) 位于java.awt.Component.dispatchEventImpl(Component.java:4889) 位于java.awt.Container.dispatchEventImpl(Container.java:2297) 位于java.awt.Component.dispatchEvent(Component.java:4711) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4904) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4535) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476) 位于java.awt.Container.dispatchEventImpl(Container.java:2283) 位于java.awt.Window.dispatchEventImpl(Window.java:2746) 位于java.awt.Component.dispatchEvent(Component.java:4711) 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) 在java.awt.EventQueue.access$500(EventQueue.java:97) 在java.awt.EventQueue$3.run(EventQueue.java:709) 在java.awt.EventQueue$3.run(EventQueue.java:703) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) 在java.awt.EventQueue$4.run(EventQueue.java:733) 在java.awt.EventQueue$4.run(EventQueue.java:731) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:730) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) 在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


我的直觉是,这里的错误与解析查询表达式有关。我注意到-和/是从我的原始查询中解析出来的,但我不知道如何解决这个问题。对于此事的任何指示,我们都将不胜感激。

当!!经过一整天的努力,我终于找到了答案

不能将标准分析仪、简单分析仪或英语分析仪与唯一标识符类型查询一起使用。它们解析或删减重要的关键字符号,如连字符和/或正斜杠

因此,我将关键字分析器JAR导入Luke,并使用它搜索查询表达式

T