Lucene Query的extractTerms的替代方法是什么?

时间:2018-06-20 13:00:27

标签: lucene query-parser

在Lucene 4.6.0中,有extractTerms方法提供了从查询(Query 4.6.0)中提取术语的方法。但是,从Lucene 6.2.1开始,它不再存在(Query Lucene 6.2.1)。是否有有效的替代方法?

我需要解析由QueryParser构建的查询的术语(和对应字段)。

2 个答案:

答案 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();