Что делает хороший запрос на автоподогрев в Solr и как они работают? - PullRequest
14 голосов
/ 02 марта 2011

Этот вопрос является продолжением этого вопроса о нечастых, изолированных тайм-аутах чтения в установке solr.

В качестве возможной проблемы были обнаружены пропущенные / неверные запросы автопогрева для новых искателей.

Теперь я озадачен тем, как должны выглядеть "хорошие" запросы автоматического прогрева.

Я прочитал, но не смог найти хорошую документацию по этому вопросу.

Должны ли они найти много документов в индексе? Или они должны иметь совпадения во всех различных полях, которые существуют в индексе?

Не будет ли *:* лучшим запросом для автоматического прогрева или почему нет?

Пример конфигурации solr содержит эти примеры запросов:

<lst><str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str></lst>
<lst><str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str></lst>

Я изменил их на:

<lst><str name="q">george</str> <str name="start">0</str> <str name="rows">10</str></lst>

Почему? Потому что в индексе содержатся сущности фильма с полями для титров и актеров. Это самые популярные. И Джордж появляется в титрах и актерах.

Я действительно не знаю, имеет ли это смысл. Итак, мой вопрос:

  • Что было бы хорошим запросом на автоподогрев для моего индекса и почему?
  • Что делает хороший запрос на автоподогрев?

Это пример документа из индекса. В индексе около 70 000 документов, и все они выглядят так (конечно, только с разными значениями): пример документа:

 <doc> 
  <arr name="actor"><str>Tommy Lee Jones</str><str>Will Smith</str><str>Rip Torn</str> 
    <str>Lara Flynn Boyle</str><str>Johnny Knoxville</str><str>Rosario Dawson</str><str>Tony Shalhoub</str> 
    <str>Patrick Warburton</str><str>Jack Kehler</str><str>David Cross</str><str>Colombe Jacobsen-Derstine</str> 
    <str>Peter Spellos</str><str>Michael Rivkin</str><str>Michael Bailey Smith</str><str>Lenny Venito</str> 
    <str>Howard Spiegel</str><str>Alpheus Merchant</str><str>Jay Johnston</str><str>Joel McKinnon Miller</str> 
    <str>Derek Cecil</str></arr> 
  <arr name="affiliate"><str>amazon</str></arr> 
  <arr name="aka_title"><str>Men in Black II</str><str>MIB 2</str><str>MIIB</str> 
    <str>Men in Black 2</str><str>Men in black II (Hombres de negro II)</str><str>Hombres de negro II</str><str>Hommes en noir II</str></arr> 
  <bool name="blockbuster">false</bool> 
  <arr name="country"><str>US</str></arr> 
  <str name="description">Agent J (Will Smith) muss die Erde wieder vor einigem Abschaum bewahren, denn in Gestalt des verführerischen Dessous-Models Serleena (Lara Flynn Boyle) will ein Alien den Planeten unterjochen. Dabei benötigt J die Hilfe seines alten Partners Agent K (Tommy Lee Jones). Der wurde aber bei seiner "Entlassung" geblitzdingst, und so muß J seine Erinnerung erst mal etwas auffrischen bevor es auf die Jagd gehen kann.</str> 
  <arr name="director"><str>Barry Sonnenfeld</str></arr> 
  <int name="film_id">120912</int> 
  <arr name="genre"><str>Action</str><str>Komödie</str><str>Science Fiction</str></arr> 
  <str name="id">120912</str> 
  <str name="image_url">/media/search/filmcovers/105x/kf/false/F6Q1XW.jpg</str> 
  <int name="imdb_id">120912</int> 
  <date name="last_modified">2011-03-01T18:51:35.903Z</date> 
  <str name="locale_title">Men in Black II</str> 
  <int name="malus">3238</int> 
  <int name="parent_id">0</int> 
  <arr name="product_dvd"><str>amazon</str></arr> 
  <arr name="product_type"><str>dvd</str></arr> 
  <int name="rating">49</int> 
  <str name="sort_title">meninblack</str> 
  <int name="type">1</int> 
  <str name="url">/film/Men-in-Black-II-Barry-Sonnenfeld-Tommy-Lee-Jones-F6Q1XW/</str> 
  <int name="year">2002</int> 
 </doc> 

Большинство запросов - это запросы с точным соответствием в полях актеров с некоторыми фильтрами.

Пример:

ИНФОРМАЦИЯ: [] webapp = / solr path = / select / Титулы = {фаска = истина и сортировки = счет + по возрастанию, + малус + по возрастанию, + год + убывание & hl.simple.pre = starthl & гектолитров = верно и версия = 2,2 & фл = *, оценка и facet.query = год: [1900+ К + 1950] & facet.query = год: [1951 + К + 1980] & facet.query = год: [1981 + К + 1990] & facet.query = год: [1991 + К + 2000] & facet.query = год: [ 2001 + К + 2011] и БФ = DIV (суб (10000, малус), 100) ^ 10 & hl.simple.post = endhl & facet.field = жанр & facet.field = страна & facet.field = блокбастер & facet.field = филиал и фаска .field = product_type & QS = 5 & кварты = dismax & hl.fragsize = 200 & мм = 2 & facet.mincount = 1 & QF = актер ^ 0,1 & f.blockbuster.facet.mincount = 0 & f.genre.facet.limit = 20 & hl.fl = актер и вес = & f.affiliate.facet JSON. mincount = 1 & f.country.facet.limit = 20 & строк = 10 & пф = актер ^ 5 & начать = 0 & д = "Josi + Клейнпетер" & пс = 3} хиты = 1 статус = 0 QTime = 4

1 Ответ

15 голосов
/ 02 марта 2011

Есть 2 типа утепления.Подогрев кеша запросов и кеша документов (есть также фильтры, но они похожи на запросы).Согрев кеша запросов может быть выполнен с помощью параметра, который просто перезапустит X количество последних запросов до перезагрузки индекса.Разогрев кэша документов отличается.

Цель прогрева кэша документов состоит в том, чтобы поместить большое количество наиболее часто используемых документов в кэши документов, чтобы их не нужно было читать с диска.Итак, ваши запросы должны сосредоточиться на этом.Вы должны попытаться выяснить, какие документы чаще всего ищут, и загрузить их.Желательно с минимальным количеством запросов.Это не имеет ничего общего с фактическим содержанием полей.РЕДАКТИРОВАТЬ: уточнить.Когда потепление кешируется, ваш основной интерес - это документы, которые чаще всего появляются в результатах поиска, независимо от того, как они запрашиваются.

Лично я бы запустил поиск таких вещей, как:

  • Загрузка по странам, если большинство ваших поисков относятся к американским фильмам.
  • Загрузка по годам, если большинство ваших поисков относятся к более поздним фильмам.
  • Загрузка по жанрам, если у вас естькраткий список популярных жанров.

Последняя возможность - загрузить их все.Ваши документы выглядят маленькими.В настоящее время 70 000 из них - ничто с точки зрения серверной памяти.Если кэш документов достаточно велик и у вас достаточно памяти, сделайте это.Как примечание, некоторые из ваших самых больших преимуществ будут из вашего кеша документов.Кеш запросов полезен только для повторных запросов, который может быть удручающе низким.Вы почти всегда получаете выгоду от большого кеша документов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...