저는 lucene의 QueryParser와 비슷한 것을 만들려고합니다. 그러나 파서가 없으면, 즉 StandardAnalyzer를 통해 문자열을 실행하고 tokenize하고 BooleanQuery에서 TermQuery : s를 사용하여 쿼리를 생성하십시오. 내 문제는 내가 토큰을 얻을 수 있다는 점이다. StandardAnalyzer가 아니라 Term : s. Token.term()을 사용하여 토큰을 추출하여 토큰을 변환 할 수 있지만이 토큰은 2.4.x 전용이며 역으로 표시됩니다. 두 번째 필드를 추가해야하기 때문입니다. StandardAnalyzer로 TermQuery를 제작하는 올바른 방법은 무엇입니까? 토큰 텍스트가 함께 얻을StandardAnalyzer를 TermQuery와 함께 사용하려면 어떻게해야합니까?
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)
은 API 문서에 따르면, token.termText는()이다 deprecated, 그리고 그들은 나를 대신 가리키는 뭔가를 사용하여 token.termBuffer() [0 : token.termLength()] 하지만 더 어색해 보인다. –