Двач, сейчас ты нужен мне как никогда.Пишу поисковый скрипт для движка сайта на php. Написал почти всё, но столкнулся с проблемкой.Есть массив айдишников. Нужно из таблицы в базе данных выдрать записи в том же порядке, а каком их id стоят в массиве, причём выдрать одним запросом. Помоги же мне, Двачик. Пик анрилейтид.
И сразу бамп.
Бамп, сука.
Этому треду не хватает бампа.
ну в цикле и проверяй че такого?
>>1064337Одним запросом, блджад. Постой... Ох, щи! Спасибо тебе, Анон.
генери циклом запрос where id = xxx and id = xxxxну ты понел
генери циклом запрос where id = xxx and id = xxxx
ну ты понел
>>1064365Это не совсем рационально. Много запросов не есть хорошо. Лучше одним реквестирую все записи, а потом буду проходиться по исходному массиву и в результирующем (от запроса) искать совпадение id. По-моему, быстрее будет.
а еще если база не большая то можешь посто выдрать все а потом уже сортировать лол
>>1064389просто первое что в голову в збрело
>>1064389
просто первое что в голову в збрело
>>1064403Ну это и мне взбрело вначале. Решил всё-таки минимизировать количество запросов.>>1064392Так и сделаю. Не думаю, что в базе когда-нибудь будет больше 10000 позиций.
Алсо, реализовал пока что только индексацию и поиск по новостям сайта, т.к. ещё не ясно с базой магазина и других перделок. Индексация и поиск заняли примерно по 100 строк кода. Кому интересно - могу рассказать, как это всё работает. Кстати, понравилось, почуствовал себя гуглом, лол.
раскажи о чем вобще сайт?
>>1064490Да корпоративный сайт местной фирмы, занимающейся производством и продажей замороженных полуфабрикатов и мороженого. Кроме обычных разделов (новости, статьи, о компании) им нужен интернет-магазин. Поскольку ни с одной CMS я дела не имел, решил сделать свой велосипед, благо сроки вроде-бы как нормальные (полтора месяца).
>>1064292ты ебнулся?че за массив блядь
>>1064292ты ебнулся?
че за массив блядь
так а зачем тебе понадобился массив id ?
>>1064524пиздец я слоупок 1064528 -кун
>>1064524
пиздец я слоупок
1064528 -кун
>>1064524>>1064528Этот массив - результат поискового запроса. То есть он берётся из индекса (отдельной таблицы), в нём есть только айдишники найденных полей, причём ранжированные по релевантности. Один текст является более релевантным запросу, если, начиная со второго слова запроса, сумма модулей разности сдвига с начала первого слова и сдвига следующих слов меньше, чем соответствующая херня из второго текста. Алсо, не наркоман.
>>1064561лет пять не хуярил таких дикостей уже, поскольку с бд завязал, но помойму тебе нужно join'ы использовать. эм. обьединить в одном запросе две таблицы.
>>1064561
лет пять не хуярил таких дикостей уже, поскольку с бд завязал, но помойму тебе нужно join'ы использовать. эм. обьединить в одном запросе две таблицы.
То есть мы нашли айдишники полей, соответствующие поисковому запросу, отсортировали их по релевантности, а теперь нам нужно забрать из базы сами поля в порядке массива айдишников.
>>1064561psв бд разве нет полнотекстового поиска с релевантностью?
>>1064578Как бы их невозможно объединить. Просто результатом алгоритма поиска является именно массив айдишников, но суть в том, что поиск идёт не просто запросом, а запросом в индексе, при этом сортируется хитровыебанным способом (уже программно), а потом необходимо выдрать контент согласно сформированному массиву индексов.
>>1064583делай на оборот нашли айдишники полей, соответствующие поисковому запросу, забрали из базы сами поля и отсортировали их по релевантности
>>1064583
делай на оборот нашли айдишники полей, соответствующие поисковому запросу, забрали из базы сами поля и отсортировали их по релевантности
>>1064598Есть полнотекстовый поиск, но он нерелевантен (инфа 80%) и неиндексированный (инфа 100%). Производительность важна же.
>>1064625http://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.ну или такую поеботу ищи
>>1064625http://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.
ну или такую поеботу ищи
>>1064640или lucene блядскуюну просто не время уже, имхо, самому такие вещи писать.
>>1064640или lucene блядскую
ну просто не время уже, имхо, самому такие вещи писать.
>>1064620Дык в поисковом запросе не только айдишники выдаются, но и смещение каждого слова запроса от начала текста. По этим смещениям и определяется релевантность. Никакой информации, определяющей релевантность, в таблице с самими полями - нет.Вообще, для каждого слова я делаю запрос в таблице индекса. Затем полученные массивы объединяю в один (idшник должен находиться во всех массивах, если в каком-то нет, до в итоговый не добавляю). При объединении определяю релевантность каждого idшника (для этого ещё и храню смещение). После этого сортирую по релевантности и вуаля - массив айдишников готов.
>>1064620Дык в поисковом запросе не только айдишники выдаются, но и смещение каждого слова запроса от начала текста. По этим смещениям и определяется релевантность. Никакой информации, определяющей релевантность, в таблице с самими полями - нет.
Вообще, для каждого слова я делаю запрос в таблице индекса. Затем полученные массивы объединяю в один (idшник должен находиться во всех массивах, если в каком-то нет, до в итоговый не добавляю). При объединении определяю релевантность каждого idшника (для этого ещё и храню смещение). После этого сортирую по релевантности и вуаля - массив айдишников готов.
>>1064292select infos.id, infos.infofrom ( 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.idorder by ranks.rank
>>1064656http://wiki.apache.org/lucene-java/PoweredBy"корпоративный сайт местной фирмы, занимающейся производством и продажей замороженных полуфабрикатов и мороженого."
>>1064667ranks.rankрэнк-срэнк
>>1064640>>1064653На самом деле проблемы уже нет, всё написано :3. Просто самому хотелось что-то такое написать, мозги встряхнуть, ведь можно было и на-отъебись без индексирования всего лишь одним запросом like сделать. Поскольку не ясно ни с базой продукции, ни с вариантом интеграции с 1С, дизайн ещё утверждается, пришлось чем-то себя занять полезным.
>>1064682ну тож правильно, чтоб мозги не заплывали.
- wakaba 3.0.8 + futaba + futallaby -