У меня проблема с Lucent.NET 3.0.3.Поиск Lucene с использованием StopWords в StandardAnalyzer
Мой проект анализирует документы, используя StandardAnalyzer с StopWord-List (объединенные немецкие и английские слова).
При поиске я создаю свой поисковик вручную и разбираю его с помощью MultiFieldQueryParser. Парсер инициализируется с помощью того же анализатора, что и индексирующие документы.
Анализированный поисковый запрос инициализировал BooleanQuery. Поиск BooleanQuery и TopScoreDocCollector в индексе Lucene с IndexSearcher.
Мой код выглядит следующим образом:
using (StandardAnalyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30, roxConnectionTools.getServiceInstance<ISearchIndexService>().GetStopWordList()))
{
...
MultiFieldQueryParser parser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, searchFields, analyzer);
parser.MultiTermRewriteMethod = MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE;
parser.AllowLeadingWildcard = true;
...
Query searchQuery = parser.Parse(searchStringBuilder.ToString().Trim);
...
BooleanQuery boolQuery = new BooleanQuery();
boolQuery.Add(searchQuery, Occur.MUST);
...
TopScoreDocCollector scoreCollector = TopScoreDocCollector.Create(SearchServiceTools.MAX_SCORE_COLLECTOR_SIZE, true);
...
searcher.Search(boolQuery, scoreCollector);
ScoreDoc[] scoreDocs = scoreCollector.TopDocs().ScoreDocs;
}
Если индекс I поле документа со значением «Тест- унд Produktivumgebung» Я не могу найти этот документ путем поиска этого термина.
Я получаю результаты, если исправить поисковый запрос до «Test-Produktivumgebung».
Слово «und» находится в моем списке StopWord.
Мой поисковый запрос выглядит следующим образом:
генерироваться вручную Поисковый запрос: (+ * Тест * + * унд * + * Produktivumgebung *)
поиск Parsed запрос: + (название: * Test *) + (название: * унд *) + (название: * Produktivumgebung *)
Почему я не могу найти документ на поиск "испытательно унд Produktivumgebung"?