Автокомплит по улицам

MiksIr

miksir@home:~$
Хочу сделать автокомплит по улицам.
Сфинкс или иной другой FTS использовать не хочу... в общем, в академических целях.
Вот первая идея была - побуквенные ключи в редис.

Учитывая, что нам все-равно по первой (а где-то и по второй) букве не нужны все варианты, мы можем по однобуквенным ключам положить только по 10 вариантов (наиболее востребованных) и т.п.

Но есть тут подводные камни, с которыми боремся сейчас.

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

В общем все идеи велкам.
 

MiksIr

miksir@home:~$
Пока пробуем обычные ключ-значение, где ключ - это начальные буквы слова. Количество букв определяется по количеству улиц на это сочетание букв.
В общем выглядит рабоче, но нужно править клиентский код.
В общем, наверно на этой неделе фронт-енд наш будет пробовать. Тогда подробнее расскажу, как получится.
 

dadoc

Новичок
Делали похожее для гео названий на базе вот этого http://en.wikipedia.org/wiki/Trie
Получился простенький REST сервис в который можно загружать список и потом делать поиск по 2-3-4 и т.д. буквам
 

Redjik

Джедай-мастер
Ну вообще Дубльгис как то такое сделало, можно использовать их апи.
Ну или хотя бы попробовать спросить, как они это сделали.
 

MiksIr

miksir@home:~$
Публичный сервис какой-то? Я слышал только про "кладр в облаке". Ну там монгодб, не интересно ;)) Хотя посмотрим - может и монго потыкаем, если редиса не хватит. Вообще задумка стучаться в базу напрямую из nginx.
 
Сверху