У меня проблема с очень медленными фильтрами в Solr (версия 4.9.1), есть ~ 50k документов. Для первого запроса, который использует значение фильтра category_id, запрос занимает ~ 15 секунд, второй раз намного быстрее (требуется милисекунды). Но я хочу, чтобы иметь быстрые фильтры всегда :) Так что после того, как прибегая к помощи его я прочитал, что я должен иметь filterCache и кэш AutowarmingSolr очень медленные фильтры
ооочень что я сделал:
filterCache:
<filterCache
class="solr.FastLRUCache"
size="16384"
initialSize="4096"
autowarmCount="4096" />
firstSearcher:
<listener event="firstSearcher" class="solr.QuerySenderListener">
<arr name="queries">
<lst>
<str name="q">*</str>
<str name="fq">category_id:1043</str>
</lst>
</arr>
</listener>
<useColdSearcher>true</useColdSearcher>
<useFilterForSortedQuery>true</useFilterForSortedQuery>
<maxWarmingSearchers>2</maxWarmingSearchers>
Это не работает/не знаю, почему ... Для первого входа в эту категорию требуется 15 секунд, чем его быстрое. Но я всегда должен иметь быстрый ответ, для категорий и для других фильтров.
Я делаю эксперимент, все работает лучше, если я использую mainquery вместо фильтров, но фильтры должны быть такими же быстрыми, как mainquery (я читаю его где-то).
Резюме:
- Что я делаю неправильно, что autowarming не работают?
- Как сделать автосогласование для каждого фильтра/каждого значения фильтра?
То, что я пытаюсь сделать: ИТАК, у меня есть магазин с ~ 50 000 продуктов и 1000 ~ категории и много других фильтров (тип, цена и т.д.), мой каталог основан на SOLR (фильтрация), теперь, если я использую фильтры первого входа в категорию принимает 15 секунд, то он должен быть быстрым каждый раз ....
Мой пример запроса:
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="debugQuery">true</str>
<str name="website_id:1"/>
<str name="stats.field">PLN_0_price_decimal</str>
<str name="product_status:1"/>
<str name="q">**</str>
<str name="store_id:1"/>
<str name="fq">category_id:10561</str>
</lst>
</lst>
Проблема была в том, что фильтры были на 50 (!) Раз медленнее обычного запроса, причина заключалась в использовании ** вместо * (посмотрите на мой ответ) :) теперь фильтрация очень быстрая –
Я понятия не имею, что '** «поиск действительно будет в плане механики Солра. Но если это сработает для вас - отлично. Просто не забудьте вернуться и обновить ответ, если вдруг обнаружите, что вы сейчас не ищете вообще или что-то в этом роде. –