为什么通配符查询“dog#V*”无法检索到包含“dog#VVP”的文档?
以下用 Jython 为 Lucene 3.0.0 编写的代码无法检索索引文档。我错过了什么吗?
analyzer = WhitespaceAnalyzer()
directory = FSDirectory.open(java.io.File("testindex"))
iwriter = IndexWriter(directory, analyzer, True, IndexWriter.MaxFieldLength(25000))
doc = Document()
doc.add(Field("sentence", "dog#VVP", Field.Store.YES, Field.Index.ANALYZED))
iwriter.addDocument(doc)
iwriter.close()
directory.close()
parser = QueryParser(Version.LUCENE_CURRENT, "sentence", analyzer)
directory = FSDirectory.open(java.io.File("testindex"))
isearcher = IndexSearcher(directory, True) # read-only=true
query = parser.parse("dog#V*")
hits = isearcher.search(query, None, 10).scoreDocs
print query_text + ":" + ", ".join([str(x) for x in list(hits)])
输出是:
dog#V*:
它不返回任何东西。我看到 dog#VV* 或使用除“#”以外的分隔符的相同行为(我尝试了“__”和“aaa”)。有趣的是,以下查询有效:dog#???、dog#*。