Solr自定义解析器问题

时间:2011-11-15 10:56:58

标签: solr

我想要一个简单的功能,即将整个用户查询与索引数据匹配,并仅返回完全匹配。我知道我们可以用双引号给出查询。但是由于这个实用程序将在我们的应用程序中广泛使用,我设计了一个自定义解析器组件,它将为用户输入的查询创建一个短语查询(就像在双引号内给出查询时solr所做的那样)。

但在这种情况下,我无法将任何文件作为匹配。

代码是:

public Query parse() throws ParseException {

    PhraseQuery pq = new PhraseQuery();
    String qf = params.get("qf",getReq().getSchema().getDefaultSearchFieldName());
    String query = getString();

    if(query == null){
        return pq;      
    }
    String[] queryTerms = query.split("[ ?<>,/?\\()*!@#$%^&_+=|{}'`~;:\"-.]");
    for(String queryTerm : queryTerms){
        pq.add(new Term(qf,queryTerm.toLowerCase()));   
    }

    return pq;
}

有任何建议吗???

1 个答案:

答案 0 :(得分:0)

为什么要编写自定义实现?
在调用之前扩展QueryParserHelper类并修改查询应该对您有用,因为它会创建一个短语查询。

原型 -

@Override
public Query parse(String query, String defaultField)
    throws QueryNodeException {
  String modifiedQuery = "\""+query.toLowerCase()+"\"";
  return (Query) super.parse(modifiedQuery, defaultField);

}
相关问题