Поиск документов по частичным словам - PullRequest
9 голосов
/ 26 апреля 2011

Я ищу систему поиска документов (например, Xapian, Whoosh, Lucene, Solr, Sphinx или другие), которая способна искать частичные термины.

Например, при поиске термина «brit» поисковая система должна возвращать документы, содержащие «britney» или «britain», или вообще любой документ, содержащий слово, соответствующее r *brit*

Тангенциально, я заметил, что большинство движков используют TF-IDF (термин «частота-обратная частота документа») или его производные, которые основаны на полных терминах, а не частичных.Есть ли другие методы, которые были успешно реализованы, кроме TF-IDF для поиска документов?

1 Ответ

16 голосов
/ 28 апреля 2011

С помощью lucene вы сможете реализовать это несколькими способами:

1.) Вы можете использовать подстановочные запросы *brit* (вам нужно настроить анализатор запросов, чтобы разрешить использование подстановочных знаков)

2.) Вы можете создать дополнительное поле, содержащее N-грамм всех слагаемых . Это приведет к увеличению индексов, но во многих случаях будет быстрее (скорость поиска).

3.) Вы можете использовать нечеткий поиск для обработки ошибок ввода в запросе. например кто-то набрал britnei, но хотел найти britney.

Для запросов с подстановочными знаками и нечеткого поиска взгляните на документацию по синтаксису запроса .

...