[d / dg / ad / pr / ph] - [au / b / bg / bo / c / di / ew / f / fa / fi / fl / hr / ja / me / mo / mu / n / ne / o / p / pa / r / re / s / sp / t / td / tr / tv / vg / w / wh / wm / wp] - [a / aa / fd / k / m / ma] - [fg / g / gg / h / ho / ls / u / y] - [Главная]

[Назад]
Ответ
(оставьте это поле пустым)
E-mail
Тема
Комментарий
Файл
Перейти к
Подтверждение
Кликните в поле ввода капчи для ее показа
Пароль (чтобы удалить пост или файл)
  • Разрешённые типы файлов: GIF, JPG, PNG
  • Максимальный размер файла 1536 килобайт и 2048×2048.
  • Изображения размером более 200x200 точек будут уменьшены.

Файл: 1247874185007.jpg -(34кб, 333x500) Показана уменьшенная копия, оригинал по клику.
34 №1064292  

Двач, сейчас ты нужен мне как никогда.
Пишу поисковый скрипт для движка сайта на php. Написал почти всё, но столкнулся с проблемкой.
Есть массив айдишников. Нужно из таблицы в базе данных выдрать записи в том же порядке, а каком их id стоят в массиве, причём выдрать одним запросом. Помоги же мне, Двачик. Пик анрилейтид.

>> №1064304  

И сразу бамп.

>> №1064322  

Бамп, сука.

>> №1064333  

Этому треду не хватает бампа.

>> №1064337  

ну в цикле и проверяй че такого?

>> №1064356  

>>1064337
Одним запросом, блджад. Постой... Ох, щи! Спасибо тебе, Анон.

>> №1064365  

генери циклом запрос where id = xxx and id = xxxx

ну ты понел

>> №1064389  

>>1064365
Это не совсем рационально. Много запросов не есть хорошо. Лучше одним реквестирую все записи, а потом буду проходиться по исходному массиву и в результирующем (от запроса) искать совпадение id. По-моему, быстрее будет.

>> №1064392  

а еще если база не большая то можешь посто выдрать все а потом уже сортировать лол

>> №1064403  

>>1064389

просто первое что в голову в збрело

>> №1064423  

>>1064403
Ну это и мне взбрело вначале. Решил всё-таки минимизировать количество запросов.
>>1064392
Так и сделаю. Не думаю, что в базе когда-нибудь будет больше 10000 позиций.

>> №1064446  

Алсо, реализовал пока что только индексацию и поиск по новостям сайта, т.к. ещё не ясно с базой магазина и других перделок. Индексация и поиск заняли примерно по 100 строк кода. Кому интересно - могу рассказать, как это всё работает.
Кстати, понравилось, почуствовал себя гуглом, лол.

>> №1064490  

раскажи о чем вобще сайт?

>> №1064514  

>>1064490
Да корпоративный сайт местной фирмы, занимающейся производством и продажей замороженных полуфабрикатов и мороженого. Кроме обычных разделов (новости, статьи, о компании) им нужен интернет-магазин. Поскольку ни с одной CMS я дела не имел, решил сделать свой велосипед, благо сроки вроде-бы как нормальные (полтора месяца).

>> №1064524  

>>1064292
ты ебнулся?

че за массив блядь

>> №1064528  

так а зачем тебе понадобился массив id ?

>> №1064543  

>>1064524

пиздец я слоупок

1064528 -кун

>> №1064561  

>>1064524>>1064528
Этот массив - результат поискового запроса. То есть он берётся из индекса (отдельной таблицы), в нём есть только айдишники найденных полей, причём ранжированные по релевантности. Один текст является более релевантным запросу, если, начиная со второго слова запроса, сумма модулей разности сдвига с начала первого слова и сдвига следующих слов меньше, чем соответствующая херня из второго текста. Алсо, не наркоман.

>> №1064578  

>>1064561

лет пять не хуярил таких дикостей уже, поскольку с бд завязал, но помойму тебе нужно join'ы использовать. эм. обьединить в одном запросе две таблицы.

>> №1064583  

То есть мы нашли айдишники полей, соответствующие поисковому запросу, отсортировали их по релевантности, а теперь нам нужно забрать из базы сами поля в порядке массива айдишников.

>> №1064598  

>>1064561
ps
в бд разве нет полнотекстового поиска с релевантностью?

>> №1064612  

>>1064578
Как бы их невозможно объединить. Просто результатом алгоритма поиска является именно массив айдишников, но суть в том, что поиск идёт не просто запросом, а запросом в индексе, при этом сортируется хитровыебанным способом (уже программно), а потом необходимо выдрать контент согласно сформированному массиву индексов.

>> №1064620  

>>1064583

делай на оборот нашли айдишники полей, соответствующие поисковому запросу, забрали из базы сами поля и отсортировали их по релевантности

>> №1064625  

>>1064598
Есть полнотекстовый поиск, но он нерелевантен (инфа 80%) и неиндексированный (инфа 100%). Производительность важна же.

>> №1064640  

>>1064625
http://sphinxsearch.com/ ?
How do you implement full-text search for that 10+ million row table, keep up with the load, and stay relevant? Sphinx is good at those kinds of riddles.

ну или такую поеботу ищи

>> №1064653  

>>1064640
или lucene блядскую

ну просто не время уже, имхо, самому такие вещи писать.

>> №1064656  

>>1064620
Дык в поисковом запросе не только айдишники выдаются, но и смещение каждого слова запроса от начала текста. По этим смещениям и определяется релевантность. Никакой информации, определяющей релевантность, в таблице с самими полями - нет.

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

>> №1064667  

>>1064292
select infos.id, infos.info
from (
select 1 as rank, 15 as id union all
select 2, 27 union all
select 3, 48 union all
select 4, 55 union all
select 5, 79
/* тут твой массив ранжированных айдишек, ну ты понел */
) as ranks left outer join infos on ranks.id = infos.id
order by ranks.rank

>> №1064670  

>>1064656
http://wiki.apache.org/lucene-java/PoweredBy
"корпоративный сайт местной фирмы, занимающейся производством и продажей замороженных полуфабрикатов и мороженого."

>> №1064677  

>>1064667
ranks.rank
рэнк-срэнк

>> №1064682  

>>1064640>>1064653
На самом деле проблемы уже нет, всё написано :3. Просто самому хотелось что-то такое написать, мозги встряхнуть, ведь можно было и на-отъебись без индексирования всего лишь одним запросом like сделать. Поскольку не ясно ни с базой продукции, ни с вариантом интеграции с 1С, дизайн ещё утверждается, пришлось чем-то себя занять полезным.

>> №1064690  

>>1064682
ну тож правильно, чтоб мозги не заплывали.



Удалить пост []
Пароль
[d / dg / ad / pr / ph] - [au / b / bg / bo / c / di / ew / f / fa / fi / fl / hr / ja / me / mo / mu / n / ne / o / p / pa / r / re / s / sp / t / td / tr / tv / vg / w / wh / wm / wp] - [a / aa / fd / k / m / ma] - [fg / g / gg / h / ho / ls / u / y] - [Главная]