• Как округлить число относительно?

    @SemenDemon Автор вопроса
    Итоговое решение взято таким:
    $n = 12345;
    echo round($n, -1 * round(log10($n))+1);
    //в PHP отрицательный параметр производит округление слева от запятой

    оказалось что "любимость" числа это округление до первых двух цифр
    например:
    12.250руб это ближе к 12.000руб
    1.330.500руб это ближе к 1.300.000руб

    получается что расхождение около 10% что гуд.
    на мелких числах так и остается
    12руб = 12руб

    еще раз спасибо за напоминание по LOG10
  • Как округлить число относительно?

    @SemenDemon Автор вопроса
    круто, а в школе думал нафига нужны логарифмы.
  • Как найти расстояние между двумя объявлениями?

    @SemenDemon Автор вопроса
    задача нахождения нечетких дубликатов объявлений.

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

    как алгоритмически коэффициенты проставить
  • Как найти расстояние между двумя объявлениями?

    @SemenDemon Автор вопроса
    Планировал так перевести в вектора, но не ясно насколько это уместно.

    Сдам объект недвижимости:
    1к.квартира
    строго без животных
    стоимость 20000руб.
    площадь 20м2

    4 признака
    1к.квартира - категориальный признак
    строго без животных - бинарный признак
    стоимось и площадь - вещественные признаки

    Желающий снять квартиру, нужно:
    1.к.квартира
    есть собака
    стоимостью до 30000руб.
    площадью не менее 30м2

    сдающий :
    в идеале хочет ничего не сдавать - 0
    но готов сдать 1.к.кв - 1
    его вектор по категории 1к.кв. : 0->1

    в идеале хочет что бы не было животных - 0
    согласен только на отсутствие животных - 0
    вектор по животным 0->0

    в идеале хочет все деньги снимаюшего - бесконечность
    согласен сдать за 20000руб.
    вектор по стоимости: бесконечность->20000

    площадь
    в идеале хочет ничего не сдавать - 0
    располагает площадью 20 м2 - 30
    вектор: 0->20

    квартира: 0->1
    животные: 0->0
    деньги: бесконечность->20000
    площадь: 0->20

    Снимающий
    в идеале хочет снять бесконечно огромный дворец: бесконечность
    устроит 1.к.кв.: 1

    животные хочет всех взять с собой: бесконечность
    имеет собаку: 1
    вектор: бесконечность->1

    деньги хочет бесплатно жить : 0
    согласен на 30000руб: 30000
    вектор: 0->30000

    площадь
    хочет всю площадь дома: бесконечность
    согласен на площадь 30м2
    вектор: бесконечность ->30

    снимающий вектора
    квартира: бесконечность->1
    животные: бесконечность->1
    деньги: 0->30000
    площадь: бесконечность->20

    сдающий вектора
    квартира: 0->1
    животные: 0->0
    деньги: бесконечность->20000
    площадь: 0->20
  • Как найти расстояние между двумя объявлениями?

    @SemenDemon Автор вопроса
    Вы написали что то вроде расстояния хемминга, которое в данном случае вроде не совсем уместно.

    есть идея перевести параметры в вектора а уже их складывать и сравникать. локация получается категориальным признаком
  • Чем решить задачу поиска дубликатов из 1млрд изображений?

    @SemenDemon Автор вопроса
    сколько векторов вошло в 67гб faiss ? Датасет динамический.
  • Чем решить задачу поиска дубликатов из 1млрд изображений?

    @SemenDemon Автор вопроса
    вы описали другую процедуру. речь идет о поиске неточных дубликатов. (другой размер, небольшой поворот, зум, кроп и тд)
  • Чем жертвовать при шардировании?

    @SemenDemon Автор вопроса
    решено добавить еще одну таблицу связь foto_id-real_id в таблице с фото оставляем описание фотографий. если связь с объектом хранить через implode в строке объекта то не будет возможности находить объект которому принадлежит фото. если в лоб шардировать таблицу с фотографиями (когда в ней же лежит связь с объектом) не будет возможности искать фотографии связанные с объектом. точнее будет, но слишком дорого так как шардироваться будет по id фото никто не знает в каком именно будет фото нужного объекта.
  • Чем жертвовать при шардировании?

    @SemenDemon Автор вопроса
    23млн объектов 200млн фото. 60гб. в memcached что бы хранить нужно изначально где то держать данные, вот и думаю строкой хранить в записи объекта
  • Как избавится от дублирования при join mysql?

    @SemenDemon Автор вопроса
    Да верно. сейчас запрос выполняется быстро. Но в таблице всего sa_metro_house 36,596 связей и всего 42,957 объектов в sa_real

    правильно ли что при таком запросе
    из sa_metro_house 36,596 выбираются подходящие например нужны станции 4 и 6 остается 5000записей и все эти 5000 подставляются в запрос where in house_location_id_fk.
    т.е. что будет когда их будет не 5000тыс а 500 000тыс. оптимальный ли это способ. страшно потом в спешке переделывать. или тут только нагрузочное тестирование поможет?
  • Как избавится от дублирования при join mysql?

    @SemenDemon Автор вопроса
    Информация об удаленности не нужна.
    сейчас сделал вот так
    $this->db->where($this->table_name.' .house_location_id_fk in ( select sa_metro_house.location_id_fk from sa_metro_house where sa_metro_house.metro_id_fk in ('.implode(',', $metro).') )', NULL, FALSE);

    все данные фильтруются на безопастность ранее. поэтому просто Implode сделал.

    результат
    spb.stopagent.ru/search/rent/db/id/status/see/m/6_27

    но интересует вопрос нагрузки, так как запрос нагруженный довольно.
  • Как избавится от дублирования при join mysql?

    @SemenDemon Автор вопроса
    вы верно подметили, сортировка до метро используется при выводе информации об объекте.
    когда не в поиске то сначала выводится охотный ряд 200 метров затем Площадь революции 300 метров.

    в поиске же это не имеет значения. все связанные станции находятся в пределах 1500метров. и важен сам факт наличия связи а расстояние уже втрорично и выводится подробно в описании. Этот запрос нужен только для поиска связей.
  • Возможно паралельное выполнение php?

    @SemenDemon Автор вопроса
    поведение настолько странное что непонятно как написать заголовок