string q = "m";
Query query = new QueryParser("company", new StandardAnalyzer()).Parse(q+"*");
приведет к тому, что запрос будет префиксомQuery: company: a *
Тем не менее, я получу результаты, такие как «Флот Африка», где довольно очевидно, что буква А не находится на старте и поэтому дает мне нежелательные результаты.
Query query = new TermQuery(new Term("company", q+"*"));
приведет к тому, что запрос будет termQuery: company: a * и не вернет никаких результатов. Возможно, потому что он интерпретирует запрос как точное совпадение, и ни одно из моих значений не является литералом "a *".
Query query = new WildcardQuery(new Term("company", q+"*"));
вернет те же результаты, что и префиксный запрос;
Что я делаю не так?