Lucene中查询词的提取

Lucene中查询词的提取,lucene,Lucene,我正在尝试使用Lucene 3.0.3从用户指定的查询中提取术语。我的代码如下所示: protected Set<Term> getTerms(IndexSearcher searcher, Analyzer analyzer, String field, String queryString, boolean countOnly) { Set<Term> results = null; try { logger.trace( "Creat

我正在尝试使用Lucene 3.0.3从用户指定的查询中提取术语。我的代码如下所示:

protected Set<Term> getTerms(IndexSearcher searcher, Analyzer analyzer, String field, String queryString, boolean countOnly) {
    Set<Term> results = null;
    try {
        logger.trace( "Creating parser and analyzer" );
        QueryParser qp = new QueryParser(Version.LUCENE_30, field, analyzer );
        logger.trace( "Constructing query" );
        Query query = qp.parse(queryString);
        query.rewrite(searcher.getIndexReader());
        logger.trace( "Evaluating query: [" + query.toString() + "]");
        terms = new HashSet<Term>();
        query.extractTerms( terms );
    } catch(UnsupportedOperationException uoex) {
        logger.error("Error parsing query: " + e.getMessage() );
    } catch (ParseException e) {
        logger.error( "Error parsing query: " + e.getMessage() );
    } catch (IOException e) {
        logger.error( "IO Exception in processing query", e);
    }
    return terms;
}
protectedset getTerms(索引搜索器搜索器、分析器分析器、字符串字段、字符串查询字符串、布尔计数){
设置结果=空;
试一试{
trace(“创建解析器和分析器”);
QueryParser qp=新的QueryParser(Version.LUCENE_30,field,analyzer);
trace(“构造查询”);
Query=qp.parse(queryString);
rewrite(searcher.getIndexReader());
trace(“评估查询:[“+query.toString()+”]);
terms=newhashset();
查询、提取术语(术语);
}捕获(不支持操作异常uoex){
logger.error(“错误解析查询:+e.getMessage());
}捕获(解析异常){
logger.error(“错误解析查询:+e.getMessage());
}捕获(IOE异常){
logger.error(“处理查询时IO异常”,e);
}
退货条款;
}
除非(例如)查询文本中有一个问号,否则这种方法很有效。如果发生这种情况,
query.extractTerms(术语)行抛出一个
不支持操作异常
。这是在我添加
query.rewrite()
调用之前发生的,该调用本应防止此错误。不幸的是,错误仍然存在。有趣的是,查询的解析和执行(使用不同的方法)很好;失败的只是
extractTerms()
调用

下一步我应该试试什么


Gene

放弃query.rewrite的结果