在 Lucene 4.6.0 中有方法 extractTerms 提供从查询(查询 4.6.0)中提取术语。但是,从 Lucene 6.2.1 开始,它不再存在(Query Lucene 6.2.1)。有有效的替代方案吗?
我需要的是解析由 QueryParser 构建的查询的术语(和对应字段)。
在 Lucene 4.6.0 中有方法 extractTerms 提供从查询(查询 4.6.0)中提取术语。但是,从 Lucene 6.2.1 开始,它不再存在(Query Lucene 6.2.1)。有有效的替代方案吗?
我需要的是解析由 QueryParser 构建的查询的术语(和对应字段)。
也许不是最好的答案,但一种方法是使用相同的分析器并对查询字符串进行标记:
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();
我用下面的代码暂时解决了我的问题。更聪明的替代方案将被广泛接受:
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);