Я создал индекс как
Document doc = new Document();
doc.Add(new Field("SearchKey", (item.FullTextColumn ?? item.Code), Field.Store.NO, Field.Index.TOKENIZED));
doc.Add(new Field("Type", item.Type.ToString(), Field.Store.YES, Field.Index.TOKENIZED));
doc.Add(new Field("Name", item.Name, Field.Store.YES, Field.Index.UN_TOKENIZED));
doc.Add(new Field("Code", item.Code ?? string.Empty, Field.Store.YES, Field.Index.UN_TOKENIZED));
и т.д.
и я пытаюсь найти такой термин, как «Канзас-Сити» в поле «SearchKey», а другой «Тип» должен быть «Аэропорт»
для этого я пишу
QueryParser parser = new QueryParser("SearchKey", analyzer);
Query searchQuery = parser.Parse(text);
TermQuery typeQuery = new TermQuery(new Term("Type", "Airport"));
BooleanQuery filterQuery = new BooleanQuery();
filterQuery.Add(typeQuery, BooleanClause.Occur.MUST);
Filter f = new QueryFilter(filterQuery);
Hits results = searcher.Search(searchQuery,f);
но это не дает мне результата,
если я уберу 'f' из
Hits results = searcher.Search(searchQuery,f);
тогда это дает результат, но поле «Тип» содержит значения, отличные от «Аэропорт».
Любая идея, где я иду не так?