Нечеткое сравнение в Ruby / Rails

Искал хорошие варианты нечеткого сравнения в Rails.

По сути, у меня есть набор строк, которые я хотел бы сравнить с некоторыми строками в моей базе данных, и я хотел бы получить ближайшую, если применимо. В этом конкретном случае меня не так интересует обнаружение букв в неправильном порядке / неправильное написание, а скорее возможность игнорировать посторонние слова (дополнительная информация, пунктуация, такие слова, как:, и, это и т. Д.) И выбирать лучший матч. Эти строки обычно состоят из 2-7 слов.

Что бы вы посоветовали лучше всего сделать? Я посмотрел на amatch (http://flori.github.com/amatch/doc/index.html), но мне было интересно, что еще там было.

Спасибо!


person Thariq Shihipar    schedule 29.07.2011    source источник
comment
Похоже, решение для полнотекстового поиска может быть лучше для вас, чем система нечеткого поиска.   -  person mu is too short    schedule 29.07.2011
comment
Возможно, я уже использую систему полнотекстового поиска, и она не слишком хороша для игнорирования посторонних слов. Возможно, это проблема конфигурации.   -  person Thariq Shihipar    schedule 29.07.2011
comment
Обычно есть список стоп-слов, с которым можно поиграться.   -  person mu is too short    schedule 29.07.2011
comment
Возможно, но на самом деле это не такой «список стоп-слов». Они могут дать мне дополнительную информацию о том, что я ищу, и которую мне нужно игнорировать, но нет никакого реального образца или списка слов, которые я мог бы использовать для этого.   -  person Thariq Shihipar    schedule 30.07.2011


Ответы (2)


Посмотрите и поиграйте с Thinking Sphinx http://freelancing-god.github.com/ts/en/ Я искренне рекомендую его. Здесь также есть превосходный Railscast о том, как его использовать.

http://railscasts.com/episodes/120-thinking-sphinx

В противном случае используйте ARel - но вам придется реализовать свою собственную нечеткую логику (я бы не рекомендовал)

person jamesc    schedule 01.08.2011

Взгляните на этот гем FuzzyMatch

Это может вам помочь.

person RAJ    schedule 10.12.2012