Многие языки в Европе являются флективными. Это означает, что одно слово может быть написано в нескольких формах в тексте. Например, слово «компьютер» на польском языке «компутер» имеет несколько форм: «компутер», «komputerowi», «komputerem», «KOMPUTERY» и т.д ..Django + Haystack + Whoosh: как бороться с перегибом языка
Как следует использовать Джанго + стог + правильно свист иметь дело с перегибом языка?
Всякий раз, когда я ищу любую форму «компьютер», «компутера», «компьютер», я имею в виду эту же вещь -> «компьютер».
В НЛП существует базовый подход, основанный либо на словесных словах (суффиксах суффиксов), либо на преобразовании формы в базовую форму («komputerowi» => «komputer»). Есть некоторые библиотеки, которые могут помочь с этим.
Моя первая мысль заключалась в подготовке специального фильтра шаблонов, который преобразует каждое распознанное слово в заданной переменной в текст с базовыми формами, а не с формами. Тогда я мог бы использовать его в шаблонах поисковых индексов в django + haystack. Если поисковый запрос будет также преобразован, прежде чем оценивать механизм whoosh, это должно работать отлично. Смотрите пример:
haystack search index template:
{{some_indexed_text|convert_to_base_form_filter}}
text to index: "Nie ma komputera" => "Nie ma komputer" <- this is really indexed
search query: "komputery" => "komputer" <-- this will match
Но я не думаю, что это «элегантное» решение этой проблемы, а также некоторые другие функции не будут работать - как предлагая предложения орфографических ошибок.
Итак - как я должен решить эту проблему? Может быть, я должен использовать другую поисковую систему, чем whoosh?
Спасибо! Я не знал, что у него есть все. – thedk
К сожалению, эта ссылка больше не работает – Rost