Еще одна задачка.
Есть некий начальный список запросов, которые пользователи однозначно будут запрашивать на сайте. Допустим это список городов. Как реализовать поисковые подсказки на основе этого списка?
Пока план таков: смотрим, что уже введено в поисковую форму, сравниваем с заданным списком, выводим в подсказку найденные совпадения. Или можно проще?
Как реализовать собственные поисковые подсказки на поисковой строке сайта?
(Ответов: 14, Просмотров: 2477)
- 05.11.2013 16:13
- 05.11.2013 16:24
могу только предложить разбить список городов по алфавиту, чтобы сузить область поиска.
- 05.11.2013 16:33
lv372299, Ну так-то да, список будет отсортирован. А в общем случае алгоритм действий нормальный?
Просто я не могу понять, как работать с данными "на лету". Да и программист из меня тот еще, потому и спрашиваю. - 05.11.2013 16:43
В программирование есть такой класс, как TreeMap и он является блестящим выбором для хранения больших объемов отсортированной информации.
Спасибо сказали:
hronny(18.11.2013), - 05.11.2013 16:55
Леонид Каруна, в каком ЯП используется этот класс?
Кстати, нарыл кое что: https://github.com/twitter/typeahead.js вот думаю, подойдет или нет?
Помогите пожалуйста подключить к чистому html-сайту.
1/ подключаем jquery
2/ подключаем typehead.js
3... а дальше не знаю) - 06.11.2013 03:16Код:на сервере
<input type=text name=pole onChange="chk()"> function chk() { тут запрос ajax'ом на сервер с параметром pole.value, я в этом не силен. обратно приходит JSON массив который отображается всплывающим списком }Код:так реализованы 90% всплывающих подсказок в сети$p=$_GET["p"]; //вообще то фильтрация кавычек и прочей дряни $r=mysql_query("SELECT * FROM table WHERE query LIKE '%$p%'"); $a=array(); while ($row=mysql_fetch_assoc($r)) { $a[]=$row[query]; } $a=json_encode($a); echo $a;Спасибо сказали:
hronny(06.11.2013), - 06.11.2013 12:19
Если использовать typeahead.js, то php не понадобится. Достаточно воспользоваться примером со страницы _http://twitter.github.io/typeahead.js/examples/ . ТС, смотрите первый пример, просто добавьте его перед закрывающимся тегом </body> обрамив тегом <script>. Там Вам понадобится файл countries.json. Взять его можно тут _http://twitter.github.io/typeahead.js/data/countries.json. В примере поменять расположение файла на своё.
Спасибо сказали:
hronny(09.11.2013), - 08.11.2013 17:10Новичок

- Регистрация: 07.11.2013
- Сообщений: 8
- Репутация: 2
Можно сделать по двум вариантам:
1. Вывести изначально все города в список, сделать невидимым.Код:Есть поле<ul class="city"> <li style="display:none">Москва</li> <li style="display:none">Санкт-Петербург</li> ...... <li style="display:none">Волгоград</li> </ul>Код:подключаем jquery, пишем:<input type="text" value="" id="search"/>
Код:Способ не очень хороший, т.к. выводится сразу весь список, что создаёт нагрузку на сервер.$(".search").keyup(function () { $("city li").each(function(){ var search=$("search").val(); if ($(this).text().toLowerCase().indexOf(search) >= 0) $(this).show() else $(this).hide() }) }
2. AJAX (уже описали выше) - самый правильный.Спасибо сказали:
hronny(09.11.2013), - 18.11.2013 16:20
Спасибо за советы, прикрутил typehead.js
Теперь вопрос. На примере тех-же городов.
Известно, что пользователь будет вводить только названия городов, при том с опечатками, синонимами и "старыми" названиями городов (весь этот список заранее известен).
Пример:
Пользователь вводит: Санкт-Петербург, Питер, Ленинград.
В поисковой подсказке значатся: Санкт-Петербург, _http://ссылка_на_статью
При этом в поисковой подсказке должно отображаться корректное название города и ссылка на определенную страницу. Далее пользователь либо кликает по предложенной ссылке, либо продолжает вводить то, что вводил. При этом по окончании ввода и нажатии кнопки "поиск" пользователь должен перейти на определенную страницу (в примере на страницу Санкт-Петербурга). Как это реализовать?
В принципе не сложно сформировать json с прописанными в нем синонимами и словоформами городов. А вот как при этом реализовать переход на страницу?
Да, по сути это уже не поисковая форма, а элемент удобной навигации. (Не городить длинный список городов в столбик, а оформить в виде окна с вводом текста, показом подсказок на основе введенного текста и переход на страницу).
Да, может я и пытаюсь изобрести велосипед. Но мне нужен этот функционал с минимальными трудозатратами. У самого не получается, прошу вашей помощи...Последний раз редактировалось hronny; 18.11.2013 в 16:22.
- 19.11.2013 08:49Banned

- Регистрация: 12.04.2012
- Сообщений: 586
- Репутация: 126
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 100 сообщение(ий)):У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.
Тэги топика:
Похожие темы
| Темы | Раздел | Ответов | Последний пост |
|---|---|---|---|
Разные поисковые подсказки от поисковика Поиск@Mail.Ru | Mail.ru Рамблер... | 8 | 23.10.2010 18:05 |





