Publish your project for free and start receiving offers from freelance contractors in serveral minutes after publication!

Сделать поиск по параметрам для большой базы объявлений

project expired


У нас есть доска объявлений, несколько млн записей в базе. Движок сделан на php, а база - на mysql. Движок старый, поэтому весь текст объявлений хранится в одном поле "описание" и частично в поле "название".

Теперь понадобилось сделать поиск по параметрам.

Параметры у каждой категории свои, и собраны в отдельных excel-файлах (пример скрина смотрите во вложении).


В итоге должен получится скрипт поиска, который в зависимости от выбранной категории, дает выбрать нужные значения (или их диапазон от..до) параметров именно этой категории, а затем - найдет в базе все подходящие объявления. Скрипт должен быть удобен для встраивания в существующий движок.

Нужно предложить схему и реализовать ее в виде нескольких php-скриптов.


1 этап: Скрипт, который берет все excel-файлы из заданной папки на сервере и собирает из них наборы параметров. Наверное после этого их нужно сохранить в какую-то отдельную таблицу в базе. Должна быть возможность запускать этот скрипт повторно - если у нас поменялись эти файлы и мы их зальем на сервер обновленные.


2 этап: Скрипт, который проходит по всем объявлениям и определяет - какие из параметров данной категории есть в описании+названии данного объявления и какие у них значения. Значения нужно как-то запомнить для поиска. Возможно понадобится создать новые поля в таблице объявлений. Предлагайте. Основная сложность в том, чтобы распознать нужные параметры и их значения в сплошном куске текста объявления. Например, рубрика Недвижимость: ищем параметр "этажность". Кто-то напишет "продам квартиру, этаж 3/9", кто-то - "этаж 3 из 9", а кто-то - "продается квартира на 3 этаже 9 этажного дома" и тд. Вариантов много. А еще надо учесть, что у некоторых значений некоторых параметров есть синонимы. Например "дизтопливо" = "ДТ". Синонимы будут перечислены в excel-файлах.


3 этап: Скрипт поиска: выбор категории - задание значений параметров - выборка из базы - вывод списка. Верстка тут не нужна, простейшей html-формы без стилей будет достаточно.


Во 2 и 3 этапах нужно помнить, что на сайте база больше 10 млн. объявлений (хотя вам для работы будет залита уменьшенная версия). Поэтому по время выполнения поиска по заданным параметрам все запросы должны быть простейшие, разумеется без join.


Исполнителю будет предоставлен доступ к ftp и phpmyadmin и залит частичный дамп базы.

Предлагайте свое видение этой работы, стоимость и сроки.



Update #1 from 20 February 2017
Важно для всех соискателей: если оставляете заявку, то пожалуйста сразу присылайте в личном сообщении ваш примерный план. Нам важно до начала работы понимать, насколько исполнитель понимает задачу, насколько он подходит для этого. Заявки из одного слова "обращайтесь" или откровенный спам от студий не рассматриваются. Читаем только внятные предложения.

Applications 1

Only registered users can view attachments.


  1. 1 day200 ₴
    Виталий Драйвкодер
     115   3   2

    Интересное и сложное задание, я бы поклацал.

    Предлагаю свои услуги.
    php mysql javascript , работал с большинством открытых цмс, опыт больше 10 лет.
    силен в голом коде. работа по правкам доделкам много, с нуля тоже делал большие проекты.
    скайп: smiletassadar
    почта: [email protected]

    Ukraine Ukraine | 16 February 2017 |
  2. proposal concealed by freelancer
  3. proposal concealed by freelancer
  4. 7 days10000 ₽
    Елена Яковлева
     194 

    Сделаю.

    Russia Yaroslavl | 19 February 2017 |
  5. 5 days10000 ₴
    Микола Ф.
     1975  verified   53   1

    Привет могу помочь! Напишите мне начну прям щас.

    Ukraine Kyiv | 19 February 2017 |
  6. 7 days10000 ₴
    Дмитрий Куцай
     458   6   0

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

    Ukraine Dnepr | 21 February 2017 |
  • Врятли вы доя существующей базы подберёте нужные параметры для нужных объявлений правильно в авторежиме. Лучше всего для начала выстроить/доработать структуру существующей базы данных. Определить поля/типы/значения для определённых категорий и последним этапом попробывать парсить ваши объявления, вылавливать в них ключи и по ним подвящывать параметры. А вот по каким критериям определить сроки и стоимость реализации данной задачи - даже представить сложно. 

  • Сейчас занят, но подскажу: если в поиск будет введено "ДТ", промежуточный скрипт должен подставлять синоним - "дизельное топливо". Иначе MySQL проигнорирует запрос.

    И регистр символов неважен.

  • А зачем велосипеды такие придумывать жуткие? Есть же Apache Solr - сервер индексации данных. Есть всякие Search API, которые могут помочь в интеграции проекта с сервером поиска. При этом нужен Java, установленный на сервере. Иначе, когда будет происходить поиск среди миллионов записей большого текста, ваш nginx будет отваливаться ро таймауту. И это только начало бед! Да и сервак должен быть выделенный, с оперативой от 8 Гиг. А винты либо ССД, либо САСС. Иначе это какой то трэш будет.

  • Вячеслав Иванов — project author
    Complain | 20 February 2017 |

    Кирилл, разве подобные системы ориентированы на поиск по нескольким точно заданным параметрам? Когда запросы будут примерно такие: "найти объявления, где этаж = 2, дом = монолитный, санузел = раздельный"

  • По уму, это вообще все ни так делается. Для подобных запросов используются фасетные фильтры, которые проиндексированы на сервере. Смотрите пример, очень похожий на ваш: http://best-house.org Или, разбивать запрос на составные части и тянуть с сервера индексации запросами (И, ИЛИ). Тут главный момент уже в том, что если вы решились тратить деньги и время на переделку сайта, то нужно начинать не с поиска фрилансера, которому по сути все по боку, а с разработки архитектуры: как сделать так, чтобы больше уже не нужно было переделывать, чтобы поиск работал на любых платформах, и еще много чего.  А еще проще, стукните мне в скайп, я расскажу подробнее.

  • На самом деле реализовать "синонимайзер" можно и без достаточно сильной нагрузки. Ну по крайней мере текущей нагрузки... первые проходы по базе будут тяжкими... надо пробовать...

    а по факту:

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


    1 - отдельно таблица синонимов просто перечисленных в одно поле

    2 - определяем фуллтекст поиском по этому синониму его айдишник и вешаем получается его на наше объявление (это отдельная таблица сопоставления синонимов (терминов) к нашему объявлению)

    таким образом мы просто получим данные по нашему объявлению в виде тегов скажем так.. а так же будем и по этим синонимам производить изначальный поиск тем же фулл текстом, получая уже обратно айдишники объявлений... 


    Теория "как-то так за 10 мин покумекав"....

  • Вячеслав Иванов — project author
    Complain | 21 February 2017 |

    Спасибо всем откликнувшимся на проект. Задача оказалась настолько объемная, что мы выделили главный и самый сложный ее этап в отдельный проект: https://freelancehunt.com/project/php-skript-dlya-vyideleniya-parametrov-tovarov-iz/196531.html
    Приглашаем ознакомится с описанием задачи.


Client
Вячеслав Иванов
Ukraine Vinnytsia  9   0
Project published
19 February 2017
241 views