Делать это с помощью строковых манипуляций довольно сложно, особенно если учесть, что QueryParser поддерживает повышение, фразы и т. Д.
Вы можете использовать QueryVisitor, который переписывает TermQuery в PrefixQuery.
public class PrefixRewriter : QueryVisitor {
protected override Query VisitTermQuery(TermQuery query) {
var term = query.GetTerm();
var newQuery = new PrefixQuery(term);
return CopyBoost(query, newQuery);
}
}
Класс QueryVisitor можно найти по адресу QueryVisitor для Lucene .
Обновление несколько лет спустя:
В блоге уже давно 404время назад, но источник все еще живет!В настоящее время его можно найти на github .