在Lucene 4.6.0中,有extractTerms方法提供了从查询(Query 4.6.0)中提取术语的方法。但是,从Lucene 6.2.1开始,它不再存在(Query Lucene 6.2.1)。是否有有效的替代方法?
我需要解析由QueryParser构建的查询的术语(和对应字段)。
答案 0 :(得分:1)
我暂时用以下代码解决了我的问题。更聪明的替代品将被广泛接受:
QueryParser qp = new QueryParser("title", a);
Query q = qp.parse(query);
Set<Term> termQuerySet = new HashSet<Term>();
Weight w = searcher.createWeight(q, true, 3.4f);
w.extractTerms(termQuerySet);
答案 1 :(得分:1)
也许不是最佳答案,但是一种方法是使用相同的分析器并标记查询字符串:
Analyzer anal = new StandardAnalyzer();
TokenStream ts = anal.tokenStream("title", query); // string query
CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
ts.reset();
while (ts.incrementToken()) {
System.out.println(termAtt.toString());
}
anal.close();