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