Поиска в найденном

S
На сайте с 25.11.2005
Offline
82
snk
588

Необходимо организовать поиск в "найденном".

Пытался найти в архиве, не нашел. Может кто-то сталкивался.

Есть база на 300т. есть много критериев поиска.

К примеру, клиент хочет поискать слово "машина", в результате поиска возвращается 50к записей, потом клиент ставит галочку "искать в найденном" и пишет слово "volvo", в результате должны выбраться "машины volvo". Вариант искать одним запросом "машины" и "volvo" не устраивает, обязательно должны быть галочка "поиск в найденном". и таких поисков в найденном может быть бесконечное множество

Я вижу только один вариант каждый поиск сохранять во временную таблицу с результатами, а при следующием поиска делать "текущий запрос + AND id IN (SELECT id FROM temp_search_table)"

Вопрос.

Правильный ли такой подход? Может у PostgreSQL есть какие-то свои варианты решения такого рода задачи.

Заставь свой сайт работать на тебя. Реально работает! (http://tinyurl.com/cqkpeg)
S
На сайте с 11.03.2010
Offline
29
#1

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

Проще циклом по условиям сделать запрос и все.

Если не устраивает скорось перебора всей таблицы, то первый запрос по слову "машина" все равно будет тормозить. А так используй лимиты. Пока не знал SQL_CALC_FOUND_ROWS просто просчитывал на 10 страниц вперед иговорил, что есть еще, но не считал их в реальности.

Так делал базу порядка 30-50т записей, работает довольно быстро.

P.s. А галочку и не надо убирать, просто когда ставишь галочку, делаешь запрос где есть и машина и вольво

P.s.s Сорри, за невнимательность, SQL_CALC_FOUND_ROWS наверное в вашей безе не работает. Не обратил внимание

samimages
На сайте с 31.05.2009
Offline
427
#2

Тут многое зависит от архитектуры базы...

Я лично при похожем поиске сначала выдаю марки машин после выбора марки уже ищу модель и т.д.

Опыт как иммунитет — приобретается в муках! Аудит семантики от 15К [долго] - ЛС

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий