Я задумал написать поиск. Может где и есть статья про это но я не нашел.
Например строка поиска "1 комнатная квартира в новокузнецке"
Получается мы ищем КВАРТИРУ а эта категория жилой недвижимости
Город НОВОКУЗНЕЦК
Количество комнат 1
А может быть и "комната в Новосибирске снять" или "Новостройки в москве" но и другие пользовательские запросы
Это идет взамен фильтра. Как реализовать такой поиск?
1. TroL - 24 Июня, 2014 - 09:00:12 - перейти к сообщению
2. LIME - 24 Июня, 2014 - 09:21:57 - перейти к сообщению
например http://habrahabr[dot]ru/post/132118/
3. Zuldek - 24 Июня, 2014 - 09:32:55 - перейти к сообщению
TroL пишет:
Как реализовать такой поиск?
Строго говоря, чтобы отобразить релевантные результаты по запросу "1 комнатная квартира в новокузнецке", ваша база данных должна содержать следиующие данные по объектам:
1. Тип недвижимости (квартира)
2. Количество комнат (1)
3. Геозона (Новокузнецк)
4. Тип сделки (снять, купить, сдать и проч.)
Далее путём выбора фильтров или ввода текста для поиска (первый вариант удобнее и для пользователя и для разработчика) формируете запрос к вашей пс. Если все же будете использовать текстовое поле вместо фильтров, то применение Sphinxa (которого вам порекомендовал Lime) и аналогов будет целесообразным. В этом случае нужно будет правильно настроить индексы и скормить сфинксу базу, чтобы индексы содержали приближенные к поисковым фразам значения. Также потребуется тонко настроить синонимы в файле конфигурации.
Если же поиск недвижимости ведётся по фильтрам (а он и должен таким быть), то можно обойтись sql-запросом к базе данных (пример — http://realty[dot]sarbc[dot]ru )
4. TroL - 24 Июня, 2014 - 09:48:58 - перейти к сообщению
Zuldek пишет:
Если же поиск недвижимости ведётся по фильтрам (а он и должен таким быть), то можно обойтись sql-запросом к базе данных (пример — http://realty[dot]sarbc[dot]ru )
TroL пишет:
Как реализовать такой поиск?
Если же поиск недвижимости ведётся по фильтрам (а он и должен таким быть), то можно обойтись sql-запросом к базе данных (пример — http://realty[dot]sarbc[dot]ru )
Мне нужно именно через поисковую строку, фильтр уже организован
(Добавление)
LIME пишет:
например http://habrahabr.ru/post/132118/
Интересно, но это же модуль к апачу или что то такое?
Это мне не подходит, хотелось бы написать ядро самому.
Какие принципы использовать для этого надо?
5. LIME - 24 Июня, 2014 - 09:59:22 - перейти к сообщению
TroL пишет:
но это же модуль к апачу или что то такое
Zuldek пишет:
это поисковый серверприменение Sphinxa (которого вам порекомендовал Lime) и аналогов будет целесообразным
умеющий взаимодействовать с разными источниками данных среди которых и Mysql
есть другие
этот наверное наиболее описан в статьях
TroL пишет:
а...нюнюЭто мне не подходит, хотелось бы написать ядро самому.
в добрый путь
Цитата:
для бешеной собаки семь верст не крюк
6. TroL - 24 Июня, 2014 - 10:16:27 - перейти к сообщению
LIME пишет:
в добрый путь
TroL пишет:
а...нюнюЭто мне не подходит, хотелось бы написать ядро самому.
в добрый путь
У менянет возможности устанавливать такие сервера, для этого требуется же доступ к файловой системе
(Добавление)
Вот есть стандартная задумка
разбить строку на массивы
найти например элемент города, путем перебора и регулярки ( с регулярками у меня проблемы)
Найти так же числительные которые будут искать номер дома, количество комнат или даже площадь
и в таком духе
7. LIME - 24 Июня, 2014 - 10:20:36 - перейти к сообщению
даже не знаю бывают ли на хостингах такие вещи но ты хоть узнай сначала
(Добавление)
(Добавление)
а да...синонимы еще))
(Добавление)
TroL пишет:
а так же все склонения, спряжения, однокоренные слова и в таком духеи в таком духе
(Добавление)
а да...синонимы еще))
8. TroL - 24 Июня, 2014 - 10:23:23 - перейти к сообщению
LIME пишет:
даже не знаю бывают ли на хостингах такие вещи но ты хоть узнай сначала
(Добавление)
НУ если других возможностей не найдет покараю туда, или откажемся от такого поиска
(Добавление)
НУ если других возможностей не найдет покараю туда, или откажемся от такого поиска
TroL пишет:
а так же все склонения, спряжения, однокоренные слова и в таком духеи в таком духе
Но можно же искать и по корню
(Добавление)
А как сделать поиск слова из массива с возможностью ошибки в слове
например поровнять слова квАртира и квОртира и квартирИа.
9. Zuldek - 24 Июня, 2014 - 10:50:48 - перейти к сообщению
Что вы привязались именно к сфинксу то?
Есть и php-реализации поисковых движков.
Zend_Lucene возьмите. Это php-реализация проекта Apache Lucene project. Вероятно получится обойти ограничения хостинга связанные с установкой Sphinx и ему подобных демонов на сервер хостера.
Изучите как работает и пишите свой велосипед если так хочется.
Возможно в процессе изучения кода поймете, почему ваши поиски по массивам и т.п. верхушка айсберга подобных систем.
Хоть и конкретно для вашей задачи мне совершенно непонятна необходимость городить огород если поиск по фильтрам уже реализован.
Есть и php-реализации поисковых движков.
Zend_Lucene возьмите. Это php-реализация проекта Apache Lucene project. Вероятно получится обойти ограничения хостинга связанные с установкой Sphinx и ему подобных демонов на сервер хостера.
Изучите как работает и пишите свой велосипед если так хочется.
TroL пишет:
Но можно же искать и по корню
(Добавление)
А как сделать поиск слова из массива с возможностью ошибки в слове
например поровнять слова квАртира и квОртира и квартирИа.
(Добавление)
А как сделать поиск слова из массива с возможностью ошибки в слове
например поровнять слова квАртира и квОртира и квартирИа.
Возможно в процессе изучения кода поймете, почему ваши поиски по массивам и т.п. верхушка айсберга подобных систем.
Хоть и конкретно для вашей задачи мне совершенно непонятна необходимость городить огород если поиск по фильтрам уже реализован.
10. TroL - 24 Июня, 2014 - 10:53:50 - перейти к сообщению
Zuldek пишет:
Что вы привязались именно к сфинксу то?
Есть и php-реализации пс.
Zend_Lucene возьмите. Это php-реализация проекта Apache Lucene project. Изучите как работает и пишите свой велосипед если так хочется.
Хоть и конкретно для вашей задачи мне совершенно непонятна необходимость городить огород если поиск по фильтрам уже реализован.
Есть и php-реализации пс.
Zend_Lucene возьмите. Это php-реализация проекта Apache Lucene project. Изучите как работает и пишите свой велосипед если так хочется.
Хоть и конкретно для вашей задачи мне совершенно непонятна необходимость городить огород если поиск по фильтрам уже реализован.
Потому что фильтр находится внутри определенной категории. А с главной страницы или тестовой неплохо бы тоже как то искать, потому что это фильтр будет еще и по новостям и по текстовым страницам
А вообще я исполнитель проекта, так что не мне это надо.
11. Zuldek - 24 Июня, 2014 - 11:00:30 - перейти к сообщению
TroL пишет:
Потому что фильтр находится внутри определенной категории. А с главной страницы или тестовой неплохо бы тоже как то искать, потому что это фильтр будет еще и по новостям и по текстовым страницам
А вообще я исполнитель проекта, так что не мне это надо.
А вообще я исполнитель проекта, так что не мне это надо.
С этого и надо было начинать.
На самом деле, поиск по новостям или статьям в корне отличается от поиска по объектам недвижимости и к примеру, поиска автомобилей.
Вы привели пример конкретный по недвижимости, вам конкретно обосновали почему для данного типа контента использование полнотекстового поиска нецелесообразно.
Реализация же универсального поискового движка у вас будет очень увлекательным занятияем, потому что будете писать маленьки яндекс.
Через недели мытарств вы прийдете к тому, что ваша система не сможет формировать нормальные индексы на основе БД и вам придётся либо скармливать ей веб-страницы целиком (некоторые вполне способны их кушать, а не способны, так можно отдать контент и из базы), либо формировать отдельные запросы к бд для каждого типа контента (объявления, статьи, новости) чтобы сформировать нормальные индексы (почему, надеюсь, понятно).
На последнем варианте реализации вы, скорее всего и остановитесь, на базе Zend_Search_Lucene или Sphinx
12. TroL - 24 Июня, 2014 - 11:08:58 - перейти к сообщению
Я в общем то и собираюсь по последнему варианту работать.
Как я говорил что обычный поиск по статьям написать будет не проблема
вот каким путем создать поиск по каталогу это беда
(Добавление)
помогите мне с этим вопросом пожалуйста
http://forum.php.su/topic.php?fo...4&topic=2574
Как я говорил что обычный поиск по статьям написать будет не проблема
вот каким путем создать поиск по каталогу это беда
(Добавление)
помогите мне с этим вопросом пожалуйста
http://forum.php.su/topic.php?fo...4&topic=2574
13. Zuldek - 24 Июня, 2014 - 11:23:20 - перейти к сообщению
Понимаете, пс не ищет так, как вы предполагаете.
Я дал вам пример популярного поискового движка написанного на Php почитайте как он устроен, как формирует поисковый индекс, как выглядит поисковый индекс и проч. Пока же вы пытаетесь построить деревянный небоскрёб и просите чтобы вам с этим помогли.
Я дал вам пример популярного поискового движка написанного на Php почитайте как он устроен, как формирует поисковый индекс, как выглядит поисковый индекс и проч. Пока же вы пытаетесь построить деревянный небоскрёб и просите чтобы вам с этим помогли.
14. TroL - 24 Июня, 2014 - 11:43:56 - перейти к сообщению
Zuldek пишет:
Понимаете, пс не ищет так, как вы предполагаете.
Я дал вам пример популярного поискового движка написанного на Php почитайте как он устроен, как формирует поисковый индекс, как выглядит поисковый индекс и проч. Пока же вы пытаетесь построить деревянный небоскрёб и просите чтобы вам с этим помогли.
Я дал вам пример популярного поискового движка написанного на Php почитайте как он устроен, как формирует поисковый индекс, как выглядит поисковый индекс и проч. Пока же вы пытаетесь построить деревянный небоскрёб и просите чтобы вам с этим помогли.
Деревянный небоскреб тоже не плохо. А статьи я обязательно на досуге почитаю. сегодня ищу кустарные способы
15. LIME - 24 Июня, 2014 - 11:51:08 - перейти к сообщению