Почему запрос с подстановочным знаком «собака#V*» не может получить документ, содержащий «собака#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#*.