Я пытаюсь создать что-то похожее на то, что делает QueryParser в lucene, но без парсера, то есть запустить строку через StandardAnalyzer, токенизировать ее и использовать TermQuery: s в BooleanQuery для создания запроса. Моя проблема в том, что я получаю только Token: s от StandardAnalyzer, а не Term: s. Я могу преобразовать токен в термин, просто извлекая из него строку с помощью Token.term (), но это только для 2.4.x и кажется наоборот, потому что мне нужно добавить поле во второй раз. Как правильно создать TermQuery с помощью StandardAnalyzer?
Я использую pylucene, но, думаю, ответ такой же для Java и т. Д. Вот код, который я придумал:
from lucene import *
def term_match(self, phrase):
query = BooleanQuery()
sa = StandardAnalyzer()
for token in sa.tokenStream("contents", StringReader(phrase)):
term_query = TermQuery(Term("contents", token.term())
query.add(term_query), BooleanClause.Occur.SHOULD)