Что делает хороший запрос автосогласования в Solr и как они работают?

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

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

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

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

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

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

В примере solr config есть следующие примеры запросов:

<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> 

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

Пример:

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

Ответы

Ответ 1

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

Цель кеширования документов - получить большое количество наиболее часто используемых документов в кэша документов, чтобы их не нужно было читать с диска. Итак, ваши запросы должны быть сосредоточены на этом. Вам нужно попытаться выяснить, какие ваши наиболее часто просматриваемые документы и загрузить их. Предпочтительно с минимальным количеством запросов. Это не имеет никакого отношения к фактическому содержанию полей. EDIT: уточнить. При нагревании кэша документов основной интерес представляют документы, которые чаще всего появляются в результатах поиска, независимо от того, как они запрашиваются.

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

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

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