Как обрабатывать числа как слова и цифры («один» против «1») в Zend_Lucene - PullRequest
1 голос
/ 20 июня 2011

У меня есть контент новостной статьи, который индексируется с помощью Lucene и опрашивается с помощью Zend_Lucene в PHP.

Контент часто ссылается на телевизионные каналы Великобритании (например, BBC One), но я знаю, что наши пользователи частовведите поисковый термин «BBC 1» или «BBC1», а не «BBC One».

Существует ли какой-либо «стандартный» подход к поиску «цифры как слова» и «цифры как цифры»?Проблема?

Кажется, я выбираю либо изменить поисковый запрос, когда я вижу цифры, например, я меняю условия поиска "BBC1" на "BBC 1 One" (или что-то подобное) - илиЯ изменяю индексированный контент, чтобы цифры преобразовывались в слова и наоборот, и обе версии сохранялись в индексе.

1 Ответ

0 голосов
/ 20 июня 2011

Пожалуйста, смотрите эту запись FAQ по lucene, она предлагает использовать токен-фильтр для обеспечения псевдонимов / псевдонимов слов:

26. Как сделать так, чтобы «свинья» также соответствовала «свинье»? :

Насколько я знаю, Lucene не предоставляет токенер, поддерживающий псевдонимы терминов, но вы должны написать его самостоятельно. Все, что вам нужно, это написать TokenFilter, который принимает отображение пары слов и использует его для сопоставления первого слова со вторым.

Опять же, обязательно используйте один и тот же анализатор как во время индексации, так и при поиске, и не забудьте отправить свой код в проект Lucene, чтобы другие могли его использовать ;-)

Это более старая информация, возможно, в настоящее время она еще более удобна, но, вероятно, стоит указания.

...