Улучшенный алгоритм Левенштейна

Недавно я внедрил алгоритм Левенштейна в базу данных нашей поисковой системы, но мы столкнулись с проблемой.

Согласно базовому levenshtein

Levenshtein('123456','12x456') является тем же значением, что и Levenshtein('123456','12345x')

Обычно это нормально, но для моей конкретной проблемы это неверно. Когда кто-то пользуется нашим сайтом, это неверно. Производители электронных компонентов часто выпускают похожие продукты с разницей только в самой последней букве. Если первая буква отличается, то это обычно совершенно другая категория. Поэтому мне нужен алгоритм, который считает совпадения в начале слова более ценными, чем совпадения в конце, или, другими словами, за несоответствия, возникающие в начале слова, должен применяться больший штраф, чем за несоответствия в конце.

Если у кого-то есть идеи, пожалуйста, дайте мне знать.

8
задан Mike D 20 October 2011 в 20:49
поделиться