Как реализовать собственные поисковые подсказки на поисковой строке сайта?

(Ответов: 14, Просмотров: 2398)
Страница 1 из 2 12 Последняя
  1. Гуру Аватар для hronny
    • Регистрация: 07.06.2011
    • Сообщений: 1,090
    • Репутация: 416
    • Webmoney BL: ?
    Еще одна задачка.

    Есть некий начальный список запросов, которые пользователи однозначно будут запрашивать на сайте. Допустим это список городов. Как реализовать поисковые подсказки на основе этого списка?

    Пока план таков: смотрим, что уже введено в поисковую форму, сравниваем с заданным списком, выводим в подсказку найденные совпадения. Или можно проще?
    • 0
  2. Опытный
    • Регистрация: 07.04.2012
    • Сообщений: 296
    • Репутация: 45
    • Webmoney BL: ?
    могу только предложить разбить список городов по алфавиту, чтобы сузить область поиска.
    • 0
  3. Гуру Аватар для hronny
    • Регистрация: 07.06.2011
    • Сообщений: 1,090
    • Репутация: 416
    • Webmoney BL: ?
    lv372299, Ну так-то да, список будет отсортирован. А в общем случае алгоритм действий нормальный?

    Просто я не могу понять, как работать с данными "на лету". Да и программист из меня тот еще, потому и спрашиваю.
    • 0
  4. Набираю обороты Аватар для Леонид Каруна
    • Регистрация: 27.08.2013
    • Сообщений: 494
    • Репутация: 82
    • Webmoney BL: ?
    В программирование есть такой класс, как TreeMap и он является блестящим выбором для хранения больших объемов отсортированной информации.
    Предоставляю услуги по созданию сайтов.
    Не дорого и качественно.
    • 1

    Спасибо сказали:

    hronny(18.11.2013),
  5. Гуру Аватар для hronny
    • Регистрация: 07.06.2011
    • Сообщений: 1,090
    • Репутация: 416
    • Webmoney BL: ?
    Леонид Каруна, в каком ЯП используется этот класс?

    Кстати, нарыл кое что: https://github.com/twitter/typeahead.js вот думаю, подойдет или нет?

    Помогите пожалуйста подключить к чистому html-сайту.

    1/ подключаем jquery
    2/ подключаем typehead.js
    3... а дальше не знаю)
    • 0
  6. Гуру Аватар для MetalMessiah
    • Регистрация: 19.04.2011
    • Сообщений: 745
    • Записей в дневнике: 4
    • Репутация: 189
    Код:
    <input type=text name=pole onChange="chk()">
    function chk()
    {
    тут запрос ajax'ом на сервер с параметром pole.value, я в этом не силен.
    обратно приходит JSON массив который отображается всплывающим списком
    }
    на сервере
    Код:
    $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;
    так реализованы 90% всплывающих подсказок в сети
    • 1

    Спасибо сказали:

    hronny(06.11.2013),
  7. Студент Аватар для Kartograff
    • Регистрация: 22.09.2011
    • Сообщений: 71
    • Репутация: 19
    Если использовать typeahead.js, то php не понадобится. Достаточно воспользоваться примером со страницы _http://twitter.github.io/typeahead.js/examples/ . ТС, смотрите первый пример, просто добавьте его перед закрывающимся тегом </body> обрамив тегом <script>. Там Вам понадобится файл countries.json. Взять его можно тут _http://twitter.github.io/typeahead.js/data/countries.json. В примере поменять расположение файла на своё.
    • 1

    Спасибо сказали:

    hronny(09.11.2013),
  8. Новичок
    • Регистрация: 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>
    Есть поле
    Код:
    <input type="text" value="" id="search"/>
    подключаем jquery, пишем:
    Код:
     $(".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 (уже описали выше) - самый правильный.
    • 1

    Спасибо сказали:

    hronny(09.11.2013),
  9. Гуру Аватар для hronny
    • Регистрация: 07.06.2011
    • Сообщений: 1,090
    • Репутация: 416
    • Webmoney BL: ?
    Спасибо за советы, прикрутил typehead.js

    Теперь вопрос. На примере тех-же городов.
    Известно, что пользователь будет вводить только названия городов, при том с опечатками, синонимами и "старыми" названиями городов (весь этот список заранее известен).

    Пример:
    Пользователь вводит: Санкт-Петербург, Питер, Ленинград.
    В поисковой подсказке значатся: Санкт-Петербург, _http://ссылка_на_статью

    При этом в поисковой подсказке должно отображаться корректное название города и ссылка на определенную страницу. Далее пользователь либо кликает по предложенной ссылке, либо продолжает вводить то, что вводил. При этом по окончании ввода и нажатии кнопки "поиск" пользователь должен перейти на определенную страницу (в примере на страницу Санкт-Петербурга). Как это реализовать?

    В принципе не сложно сформировать json с прописанными в нем синонимами и словоформами городов. А вот как при этом реализовать переход на страницу?

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

    Да, может я и пытаюсь изобрести велосипед. Но мне нужен этот функционал с минимальными трудозатратами. У самого не получается, прошу вашей помощи...
    Последний раз редактировалось hronny; 18.11.2013 в 16:22.
    • 0
  10. Banned
    • Регистрация: 12.04.2012
    • Сообщений: 586
    • Репутация: 126
    Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 100 сообщение(ий)):
    У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.
    • -2
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Разные поисковые подсказки от поисковика Поиск@Mail.Ru
Mail.ru Рамблер... 8 23.10.2010 18:05

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры