Lucene не ищет слово, имеющее '-' - PullRequest
0 голосов
/ 21 декабря 2011

Я использую Standard Analyzer для хранения текста, а также тот же анализатор для поиска

Вот код для поиска текста:

        Analyzer analyzer = GetAnalyzer();

        QueryParser parser = new QueryParser("Text", analyzer);         
        parser.SetAllowLeadingWildcard(true);
        Query query;        

            query = parser.Parse(finalSearch);

        Hits hits = searcher.Search(query);

А вот код, как я храню текст:

fieldText = new Field("Text", text.ToLower(), Field.Store.YES, Field.Index.TOKENIZED);     

document.Add(fieldText);

1 Ответ

0 голосов
/ 21 декабря 2011

Попробуйте убежать от своих персонажей, используя '\'.'-' будет '\-'.

С http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Escaping%20Special%20Characters

Lucene поддерживает экранирование специальных символов, которые являются частью синтаксиса запроса.Текущий список специальных символов:

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \

Чтобы экранировать эти символы, используйте \ перед символом.Например, для поиска (1 + 1): 2 используйте запрос:

\(1\+1\)\:2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...