2011-03-02 8 views
13

Esta pregunta es una continuación de this question sobre los tiempos de espera de lectura aislados e infrecuentes en una instalación de solr.¿Qué hace una buena consulta de auto calentamiento en Solr y cómo funcionan?

Como un posible problema de la falta/de malas consultas autowarming para nuevos investigadores se encontraron.

Ahora estoy confundido acerca de lo bien que las consultas deben autowarming "parecerse".

He leído, pero no podía encontrar ninguna buena documentación sobre este.

¿Deberían golpear una gran cantidad de documentos en el índice? ¿O deberían tener coincidencias en todos los campos distintos que existen en el índice?

no podrías simplemente *:* ser el mejor consulta autowarming o por qué no?

El ejemplo Solr config tiene theese consultas de muestra en ella:

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

les cambió a:

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

¿Por qué? Porque el índice tiene entidades de cine con campos para títulos y actores. Esos son los más buscados. Y George aparece en títulos y actores.

Realmente no sé si esto tiene sentido. Entonces mi pregunta es:

  • ¿Cuáles serían las buenas consultas de autocalentamiento para mi índice y por qué?
  • ¿Qué hace una buena consulta de auto calentamiento?

Este es un documento de ejemplo del índice. El índice tiene alrededor de 70.000 documentos y todos ellos se parece a esto (sólo valores diferentes, por supuesto): ejemplo el documento:

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

mayoría de las consultas son consultas correspondencia exacta en los campos actor con algunos filtros en su lugar.

Ejemplo:

INFORMACIÓN: [] ruta webapp =/Solr =/Seleccionar/ params = {faceta = true & tipo = puntuación + ASC, + malus + ASC, + años descripción & hl .simple.pre = starthl & hl = true versión & = 2,2 & fl = *, partitura & facet.query = año: [1900 + A + 1950] & facet.query = año: [1951 + A + 1980] & facet.query = año: [1981 + A + 1990] & facet.query = año: [1991 + A + 2000] & = facet.query años: [2001 + A + 2011] & bf = div (sub (10000, malus), 100)^10 = hl.simple.post & endhl & facet.field = género & facet.field = país & facet.field = blockbuster & facet.field = afiliado & facet.field = tipo_producto & qs = 5 & qt = dismax & hl.fragsize = 200 & mm = 2 & facet.mincount = 1 & qf = actor de^0.1 & f.blockbuster.facet.mincount = 0 & f.genre.facet.limit = 20 & hl.fl = actor de & wt = json & f.affiliate.facet.mincount = 1 & f.country.facet.limit = 20 & filas = 10 & pf = actor de^5 & start = 0 & q = "Josi + Kleinpeter" & ps = 3} accesos = 1 status = 0 QTime = 4

Respuesta

15

Hay 2 tipos de calentamiento. Calentamiento de caché de consultas y calentamiento del caché de documentos (también hay filtros, pero son similares a las consultas). El calentamiento del caché de consultas se puede realizar a través de una configuración que simplemente volverá a ejecutar un número X de consultas recientes antes de que se vuelva a cargar el índice. El calentamiento del caché de documentos es diferente.

El objetivo del calentamiento del caché de documentos es obtener una gran cantidad de los documentos a los que se accede con mayor frecuencia en las cachés de documentos para que no tengan que leerse desde el disco. Por lo tanto, sus consultas deben centrarse en esto. Debe intentar averiguar cuáles son los documentos que busca con mayor frecuencia y cargarlos. Preferiblemente con un número mínimo de consultas. Esto no tiene nada que ver con el contenido real de los campos. EDITAR: Para aclarar. Cuando se calienta el caché de documentos, su principal interés son los documentos que aparecen en RESULTADOS de búsqueda con mayor frecuencia, independientemente de cómo se consulten.

En lo personal, yo había corrido búsquedas para cosas como:

  • Carga por país, si la mayoría de las búsquedas son para las películas estadounidenses.
  • Cargando por año, si la mayoría de sus búsquedas son para películas más recientes.
  • Cargando por género, si tiene una breve lista de géneros muy buscados.

Una última posibilidad es cargarlos todos. Sus documentos se ven pequeños. 70,000 de ellos no son nada en términos de memoria del servidor hoy en día. Si su caché de documentos es lo suficientemente grande y tiene suficiente memoria disponible, vaya por ella. Como nota al margen, algunos de sus mayores beneficios serán de su caché de documentos. Una caché de consultas solo es beneficiosa para consultas repetidas, que pueden ser decepcionantes bajas. Casi siempre se beneficia de un gran caché de documentos.

+0

El OP podría estar usando un campo y/o caché de filtro también, lo que también sería bueno para calentarse. Si tiene una faceta enum, por ejemplo, guardará en caché un mapa de bits de documentos que coincidan con ese filtro, por lo que querrá calentarlos todos. En este caso, la forma en que consulta es importante, no solo los resultados. – Xodarap

+0

@ Xodarap: creo que los cachés de filtro se pueden calentar implícitamente. Se ejecutan como un subconjunto de las consultas ejecutadas más recientemente antes de volver a cargar el índice. Esto está en un cambio caliente sin embargo. En un arranque en frío, sí, las consultas son importantes. – rfeak

Cuestiones relacionadas