2011-02-09 12 views
5

Para indexar mi sitio web, tengo un script de Ruby que a su vez genera un script de shell que carga todos los archivos en mi raíz del documento en Solr. El script tiene muchas líneas que se ven así:Cómo impulsar un documento SOLR al indexar con/solr/update

curl -s \ 
"http://localhost:8983/solr/update/extract?literal.id=/about/core-team/&commit=false" \ 
-F "[email protected]/extra/www/docroot/about/core-team/index.html" 

... y termina con:

curl -s http://localhost:8983/solr/update --data-binary \ 
'<commit/>' -H 'Content-type:text/xml; charset=utf-8' 

Esto carga todos los documentos en mi documento raíz a Solr. Uso tika and ExtractingRequestHandler para cargar documentos en varios formatos (principalmente PDF y HTML) a Solr.

En la secuencia de comandos que genera este script de shell, me gustaría mejorar ciertos documentos en función de si su campo de Id. (Url a/k/a) coincide con ciertas expresiones regulares.

Digamos que estas son las reglas impulsar (pseudocódigo):

boost = 2 if url =~ /cool/ 
boost = 3 if url =~ /verycool/ 
# otherwise we do not specify a boost 

¿Cuál es la forma más sencilla de añadir que en tiempo índice de impulso a mi petición HTTP?

me trataron:

curl -s \ 
"http://localhost:8983/solr/update/extract?literal.id=/verycool/core-team/&commit=false" \ 
-F "[email protected]/extra/www/docroot/verycool/core-team/index.html" \ 
-F boost=3 

y:

curl -s \ 
"http://localhost:8983/solr/update/extract?literal.id=/verycool/core-team/&commit=false" \ 
-F "[email protected]/extra/www/docroot/verycool/core-team/index.html" \ 
-F boost.id=3 

Ni hizo una diferencia en el orden de los resultados de búsqueda. Lo que quiero es que los resultados potenciados sean los primeros en los resultados de búsqueda, independientemente de lo que haya buscado el usuario (siempre que, por supuesto, el documento contenga su consulta).

Entiendo que si PUBLICO en formato XML, puedo especificar el valor de impulso para todo el documento o un campo específico. Pero si lo hago, no está claro cómo especificar un archivo como el contenido del documento. En realidad, el tika page proporciona un ejemplo parcial:

curl "http://localhost:8983/solr/update/extract?literal.id=doc5&defaultField=text" \ 
--data-binary @tutorial.html -H 'Content-type:text/html' 

Pero de nuevo no está claro dónde/cómo especificar mi impulso. Probé:

curl \ 
"http://localhost:8983/solr/update/extract?literal.id=mydocid&defaultField=text&boost=3"\ 
--data-binary @mydoc.html -H 'Content-type:text/html' 

y

curl \ 
"http://localhost:8983/solr/update/extract?literal.id=mydocid&defaultField=text&boost.id=3"\ 
--data-binary @mydoc.html -H 'Content-type:text/html' 

Ninguno de los cuales alteró los resultados de búsqueda.

¿Hay alguna manera de actualizar solo el atributo boost de un documento (no un campo específico) sin alterar el contenido del documento? Si es así, pude lograr mi objetivo en dos pasos: 1) Documento/index Subir como lo he estado haciendo 2) Especificar impulso para ciertos documentos

Respuesta

3

Para indexar un documento en Solr, hay que publicarla en el/controlador de actualización. Los documentos a indexar se ponen en el cuerpo de la solicitud POST. En general, debe usar el xml format format of Solr. Usando ese xml, puede agregar un valor de impulso a un campo específico o a un documento completo.

+1

He estado obteniendo hasta ahora sin usar el formato XML. Si uso el formato XML, ¿cómo cargo un archivo (PDF o HTML) como el cuerpo del documento? –

+0

Disculpe, no me di cuenta de que estaba usando ExtractingHandler ... La sintaxis que usa para especificar un impulso en un campo es correcta (boost.field = value). Pero me doy cuenta de que estás aumentando el campo de id.Para que sea efectivo, un impulso en el tiempo del índice debe estar en un campo que usted consultará (vea http://wiki.apache.org/solr/SolrRelevancyFAQ#index-time_boosts). –

+0

Gracias. Finalmente lo hice funcionar haciendo algo como esto: 'curl -s" http: // localhost: 8983/solr/update/extract? Literal.id =/mydoc.html & commit = false & boost.text = 3 "-F" miarchivo [email protected] "' También tuve que cambiar mi formulario de búsqueda para buscar explícitamente en el campo 'texto', que es donde tika pone todos los contenidos de PDF, etc. Gracias. –

Cuestiones relacionadas