Solr Custom parser, проблема - PullRequest
       6

Solr Custom parser, проблема

0 голосов
/ 15 ноября 2011

Я хочу иметь простую функцию сопоставления всего пользовательского запроса с индексированными данными и возврата только точных совпадений. Я знаю, что мы могли бы дать запрос в двойных кавычках. Но так как эта утилита будет широко использоваться в нашем приложении, я разработал специальный компонент синтаксического анализатора, который будет создавать запрос фразы для запроса, введенного пользователем (так же, как это делает 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 голосов
/ 15 ноября 2011

Почему вы хотите написать собственную реализацию?
Расширение класса QueryParserHelper и изменение запроса перед вызовом должны работать для вас, поскольку это создаст запрос фразы.

Prototype -

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...