Lucene 5.2.1对没有位置数据的PhraseQuery进行了索引,因此无法运行PhraseQuery

Lucene 5.2.1对没有位置数据的PhraseQuery进行了索引,因此无法运行PhraseQuery,lucene,Lucene,当我在名为“内容”的字段上使用PhraseQuery进行研究时,我收到一个例外情况。 为了索引这个字段,我使用了org.apache.lucene.document.TextField类,因为这个字段包含很多单词。 我使用FrenchAnalyzer和RAMDirectory类创建索引 线程“main”java.lang.IllegalStateException中的异常:字段“comment”被索引,没有位置数据;无法运行短语查询(短语=注释:“skype”) 位于org.apache.luc

当我在名为“内容”的字段上使用
PhraseQuery
进行研究时,我收到一个例外情况。
为了索引这个字段,我使用了
org.apache.lucene.document.TextField
类,因为这个字段包含很多单词。
我使用
FrenchAnalyzer
RAMDirectory
类创建索引

线程“main”java.lang.IllegalStateException中的异常:字段“comment”被索引,没有位置数据;无法运行短语查询(短语=注释:“skype”) 位于org.apache.lucene.search.PhraseQuery$PhraseWeight.scorer(PhraseQuery.java:301) 位于org.apache.lucene.search.Weight.bulkScorer(Weight.java:137) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:768) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:485) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:694) 位于org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:410) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:439) 位于org.memory.LuceneIndexer.wildcardsearchdex(LuceneIndexer.java:189) 位于org.memory.Mem_04.main(Mem_04.java:60)

你能帮我吗?
Serge

检查是否已使用不同的字段类型为同一字段编制索引

document.Add(new TextField("comment", "Lucene rocks, do you agree?", FieldStore.YES);
.
.
document.Add(new StringField("comment", "Sure", FieldStore.YES);
如果运行此短语查询,上述代码将生成一个“非法状态异常字段-在没有位置数据的情况下被索引”错误

评论:“Lucene岩石”


因此,请确保始终使用TextField。或者,您也可以使用一个自定义字段,将IndexOption设置为DOCS\u和\u FREQS\u和\u POSITIONS

,这样就节省了我的时间。谢谢,我用了DOCS_和_FREQS_和_的位置,这对我很有用。
document.Add(new TextField("comment", "Lucene rocks, do you agree?", FieldStore.YES);
.
.
document.Add(new StringField("comment", "Sure", FieldStore.YES);