2017-01-08 2 views
-1

Мы используем SphinxSearch (не очень релевантно, поскольку возвращаем результирующие объекты из MySQL), чтобы возвращать результаты поиска пользователя. Эта часть работает нормально. Мы показываем 30 пунктов на странице, но может быть до 20k результатов, которые соответствуют.Общие атрибуты из результатов поиска

Что мы пытаемся сделать, это добавить возможность фильтрации результатов поиска в зависимости от всех атрибутов и параметров результатов поиска. Возьмите этот поиск амазонки, например:

https://www.amazon.ca/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=tablet

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

Если мы должны были это сделать, как мы можем избежать загрузки и циклизации всех результатов 400 * 30 для отображения соответствующих фильтров атрибутов/категорий? Мы пробовали зацикливать, чтобы увидеть, сколько времени потребуется, и это легко превышает 15 секунд. Мы также пробовали кэшировать общие условия поиска (например, планшет в этом случае), но, очевидно, большинство пользовательских поисков не упадут аккуратно в легко кэшируемые результирующие наборы.

Кроме того, есть ли название для этого поиска для поиска всего набора результатов фильтрации?

+0

лол почему downvote и закрытого голосования? Просто любопытно. – StackOverflowed

+0

В самом строгом смысле это не вопрос, который может быть использован блоком кода. Это большая тема, и ее решение очень хорошо вовлекает довольно много назад и вперед, для чего SO не настроен. Мой ответ действительно не «отвечает» на ваш вопрос, а не сам, он просто дает вам ссылку. Чтобы полностью ответить (в терминах SO), ваш вопрос потребует очень продолжительного учебника, который не идеален (ваш вопрос не дает достаточно подробностей). – barryhunter

+0

@barryhunter Иногда мы даже не знаем, как это называется. Ваш ответ, просто предоставляя термин «граненый поиск», дает мне достаточно возможности пройти. – StackOverflowed

ответ