Почему эта стратегия кодирования в моем индексе Lucene не работает? - PullRequest
0 голосов
/ 29 апреля 2009

В моем источнике данных есть много специальных символов, таких как косая черта, минус, плюс и т. Д. Многие из этих символов приносят проблемы в lucene.
Вот почему я решил закодировать все строки, которые я поместил в индекс.

Например, яблоко / груша станет яблоком% 2Fpear
Я полагаю, что поиск той же строки вернет мне этот документ.

Но я возвращаюсь домой с пустыми руками. Что не так?

- EDIT -
После некоторого дурачения я заметил, что запросы, которые я создаю в Luke с помощью StandardAnalyzer (с любым анализатором в этом отношении), изменяют мой% 2 в пространстве. Отсюда нет результатов. Можно ли как-нибудь сделать так, чтобы запрос анализатора не конвертировал эти? Может быть, я должен использовать другой метод экранирования, чем% XX?

- Подробнее -
Я использую StandardAnalyzer как для индексации, так и для запросов.
Я не кодирую пробелы. Это одна из причин, по которой я быстро применил свою собственную кодировку вместо использования кодировщика URL по умолчанию. Превращение яблоко / груша в яблочная груша имело бы смысл, но по моим реальным данным это не всегда (с помощью фруктовой штуки, чтобы защитить невинных) и построение интеллекта на том, когда вставьте пробелы, и когда не будет слишком много рисков. Используя Люка, я вижу, что мое поле содержит appel% 2Fpear . Поиск fruitName: приложение работает. Поиск fruitName: appel% 2Fpear не делает и не делает fruitName: appel% 2fpear .

1 Ответ

1 голос
/ 29 апреля 2009

При запросе вам необходимо экранировать специальные символы . В списке специальных символов отсутствует косая черта. Я полагаю, вам не нужно обращаться с этим персонажем.

Но вам нужно убедиться, что токены, созданные при индексации, также содержат эти специальные символы. Например, должен быть один токен для «яблоко / груша».

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