Гибкое сопоставление многих записей базы данных (сопоставление по типу Quicksilver или Launchy) - PullRequest
7 голосов
/ 04 января 2009

Предположим, у меня есть таблица базы данных со многими именами. Я хотел бы "согнуть матч" против этих имен. Я не уверен, что «гибкий матч» является правильным термином для использования, но давайте пока с этим поговорим. Были подобные дискуссии о "нечетком сопоставлении", но я не очень заинтересован в фонетическом сопоставлении. Меня интересует то, что я бы назвал упорядоченным-подмножеством соответствия.

Я бы хотел, чтобы он работал как QuickSilver (OSX) или Launchy (Windows). Вот несколько примеров совпадений для данной строки поиска:

mit M assachusetts I заменитель T технология
ffox F ярость лиса
osx ⇒ Mac OS X
мс M микро с oft Corporation

Моя конечная цель - создать веб-страницу с автозаполняемым текстовым полем, в котором будут данные, полученные с сервера.

Я уверен, что получу адекватные результаты на стороне клиента, комбинируя функции из jQuery LiveUpdate и / или jQuery QuickSelect .

Мне нужна помощь в том, как наилучшим образом справиться с гибким сопоставлением на стороне сервера с большой таблицей. У меня есть некоторые идеи о том, как создать свой собственный пользовательский индекс, используя алгоритм Quicksilver scoring и, возможно, некоторую логику индекса перестановки, но я бы не стал изобретать колесо, если что-то еще если легко доступны.

В итоге: Каков наилучший способ получить быстрое гибкое сопоставление с таблицей базы данных с несколькими строками?

Ответы [ 2 ]

4 голосов
/ 14 февраля 2009

Это не отвечает на мой вопрос напрямую, но для проекта, над которым я работаю, я понял, что мне просто не нужен серверный компонент для этого пока, Чтобы облегчить клиентскую часть моего веб-приложения, я запустил два новых проекта с открытым исходным кодом:

  • LiquidMetal : Это алгоритм оценки, подобный Quicksilver, который сравнивает строки с аббревиатурами. Полезно при построении индекса.
  • Flexselect : плагин jQuery, который превращает поля выбора в элементы управления с постепенным нахождением, совпадающие с флексом. Думайте об этом как Quicksilver, помещенный в коробку выбора. Он использует LiquidMetal для фильтрации и сортировки текущих результатов.
1 голос
/ 05 января 2009

Один из методов - просто делать НРАВИТСЯ совпадения. Поместите% между каждым символом, а затем до и после строки, и выполните поиск на основе этого. Очевидно, что это потребует других вещей для мс , таких как ' m ultimedia s ystems', но вы, вероятно, можете связать это с другой таблицей, которая содержит «предлагаемые» совпадения и сортировка по ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...