Проблема бета-версии Lucene.NET версии 4.8 - PullRequest
0 голосов
/ 31 мая 2019

Я использую Lucene.NET версии 4.8 (бета) для небольшой задачи поиска в решении, которое я делаю, но возникают проблемы с поиском без учета регистра.Я знаю, что Lucene не чувствителен к регистру, но при использовании StandardAnalyzer он должен выполнять регистрацию данных в нижнем регистре (согласно документации StandardAnalyzer ), если вы убедитесь, что запросы выполнены правильно.

Так есть идеи, что я здесь не так делаю?Я сохранил данные «Kirsten» в поле в 4 разных документах, и при поиске (в нижнем регистре) «kirsten» я не получаю ни одного попадания, но при поиске «Kirsten» я получаю ожидаемое значение 4.

Вот мой код запроса:

        query = query.ToLowerInvariant();
        BooleanQuery q = new BooleanQuery {
            new BooleanClause(new WildcardQuery(new Term(FieldNames.Name, query + WildcardQuery.WILDCARD_STRING)), Occur.SHOULD),
            new BooleanClause(new WildcardQuery(new Term("mt-year", query)), Occur.SHOULD),
            new BooleanClause(new WildcardQuery(new Term("mt-class", query + WildcardQuery.WILDCARD_STRING)), Occur.SHOULD)
        };

И проблема в том, что пользователи всегда пишут строчную версию и ожидают, что она найдет как строчные, так и прописные буквы.

1 Ответ

0 голосов
/ 03 июня 2019

Как писал @Peska в комментариях, это был случай использования StringField вместо TextField при добавлении документа (и данных) в Lucene.

Как только я переключился на использование TextField, все заработало как положено.

...