У меня проблема с Lucene.Net и BooleanQuery. Это мой код:
BooleanQuery query = new BooleanQuery();
String[] types = searchTypes.Split(',');
foreach (string t in types)
query.Add(new TermQuery(new Term("document type", t.ToLower())), BooleanClause.Occur.SHOULD);
В основном это должно быть оператор OR, проходящий через документы определенного типа, который работает сам по себе. Однако у меня также есть этот запрос:
Query documentTitleQuery = new WildcardQuery(new Term("title", "*" + documentTitle.ToLower() + "*"));
query.Add(documentTitleQuery, BooleanClause.Occur.MUST);
Который ищет слова в заголовке. Оба эти запроса работают самостоятельно. Когда они используются вместе, кажется, что Lucene рассматривает documentTitleQuery как OR. Таким образом, оба запроса вместе должны возвращать документы определенного типа И содержать конкретные слова в заголовке, но он возвращает все типы, которые имеют определенные слова в заголовке.