Вы можете переписать ваш запрос примерно так:
Query query = new QueryParser(LUCENE_VERSION, "url", analyzer).newTermQuery(new Term("url", url)).parse(url);
Предложение:
Я предлагаю вам использовать BooleanQuery, поскольку он дает хорошую производительность и внутренне оптимизирован.
TermQuery tq= new TermQuery(new Term("url", url));
// BooleanClauses Enum SHOULD says Use this operator for clauses that should appear in the matching documents.
BooleanQuery bq = new BooleanQuery().add(tq,BooleanClause.Occur.SHOULD);
IndexSearcher searcher = new IndexSearcher(index, true);
TopScoreDocCollector collector = TopScoreDocCollector.create(10, true);
searcher.search(query, collector);
Я вижу, вы индексируете, используя URL-адрес frield как Not_Analysed, что является хорошим IMO для поиска, так как анализатор не используется, значение будет сохранено как один термин.
Теперьесли в вашем экономическом обосновании указано, что я дам вам URL-адрес, который найдет EXACT из индекса Lucene Index, то вы посмотрите на индексирование с помощью другого анализатора (KeywordAnalyzer и т. д.)