2012-02-06 13 views
6

Estoy tratando de comenzar con Apache Solr, pero algunas cosas no están claras para mí. Leyendo el tutorial, configuré una instancia de Solr en ejecución. Lo que encuentro confuso es que toda la configuración de Solr (esquemas, etc.) está en formato XML. Cuando agregan datos de muestra, muestra cómo agregar documentos xml (java -jar post.jar solr.xml monitor.xml). ¿Es solo una mala elección del formato de muestra? Quiero decir, ¿están cargando datos que describen documentos, o los documentos reales que están agregando son archivos .xml?Comenzando con Solr

Estoy tratando de agregar algunos libros en formato .txt, así que si uso java -jar post.jar mydoc.txt, ¿lo estoy agregando? ¿Cómo podría agregar este documento y metadatos (autor, título) al respecto?

Dicho esto, he intentado crear una página HTML simple para publicar documentos a Solr:

<html> 
    <head></head> 
<body> 
    <form action="http://localhost:8983/solr/update?commit=true" enctype="multipart/form-data" method="post"> 
    <input type="file"> 
    <input type="submit" value="Send"> 
    </form> 
</body> 
</html> 

Cuando intento publicar un archivo, recibo esta respuesta:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">26</int> 
    </lst> 
</response> 

Es ¿esto correcto? ¿Significa que he agregado mi archivo correctamente? Si es así, una de las palabras en el archivo, por ejemplo, es "montagna" (este es un libro italiano, montagna significa montaña ...). Si vuelvo a visitar la url

http://localhost:8983/solr/select/?q=montagna&start=0&rows=10&indent=on 

espero algo que debe ser devuelto (todo el texto tal vez, o alguna información sobre el archivo), pero esto es lo que me pasa: no parece

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
     <int name="QTime">1</int> 
     <lst name="params"> 
     <str name="indent">on</str> 
     <str name="start">0</str> 
     <str name="q">montagna</str> 
     <str name="rows">10</str> 
    </lst> 
    </lst> 
    <result name="response" numFound="0" start="0"/> 
</response> 

como un partido para mí. Además, según to this answer, debería poder recuperar el texto que rodea las coincidencias con hl.fragsize. ¿Cómo integro esto en la cadena de búsqueda? Gracias

Respuesta

5

El ejemplo de solr agrega documentos al índice a través de mensajes xml. Eche un vistazo here. El *.xml que mencionó es porque hay algunos mensajes xml almacenados en los sistemas de archivos. Esos mensajes xml son los siguientes:

<add> 
    <doc> 
    <field name="id">UTF8TEST</field> 
    <field name="name">Test with some UTF-8 encoded characters</field> 
    <field name="manu">Apache Software Foundation</field> 
    <field name="cat">software</field> 
    <field name="cat">search</field> 
    <field name="features">No accents here</field> 
    <field name="price">0</field> 
    <!-- no popularity, get the default from schema.xml --> 
    <field name="inStock">true</field> 
    </doc> 
</add> 

Es solo una forma de representar cualquier tipo de documento para indexar. Cada documento contiene uno o más campos, y así sucesivamente. Hay diferentes maneras de agregar documentos a Solr, por ejemplo, también acepta CSV format, pero el más común es hoy en día el formato xml.

Creo que en realidad no está indexando nada. Puede consultar el resultado de esta consulta: http://localhost:8983/solr/select/?q=*:*, que recupera todos los documentos que tiene en su índice. Un error común también es olvidar el compromiso, pero vi que agregó el parámetro commit=true a su url, por lo que ese no es su caso.

Si desea indexar sólo el contenido de un archivo de texto, por ejemplo, podría definir su esquema con dos campos:

  • nombre de archivo de contenido

y utilizar este mensaje para indexe su documento:

<add> 
    <doc> 
    <field name="filename">test.txt</field> 
    <field name="content">Test with some UTF-8 encoded characters</field> 
    </doc> 
</add> 
1

Comprenda la terminología:

Document in solr -> Row in RDBMS 
Field of document -> Column of a cell 

Y un núcleo de Solr es, por supuesto, tanto la base de datos como la tabla gigantesca, ocupada de una manera (potencialmente) dispersa.

Para su (particular) uso, crearía un documento para cada archivo; compuesto por un ID, contenido de archivo, etc.


XML es una forma de componer operaciones de solr. http://wiki.apache.org/solr/UpdateXmlMessages

Tiene las operaciones de agregar, eliminar, confirmar y optimizar. La operación de agregar incluye uno o más documentos.

<add> 
    <doc> 
    <field name="employeeId">05991</field> 
    <field name="office">Bridgewater</field> 
    <field name="skills">Perl</field> 
    <field name="skills">Java</field> 
    </doc> 
    [<doc> ... </doc>[<doc> ... </doc>]] 
</add> 

También hay CSV (agregar sólo la funcionalidad), JSON (funcionalidad completa), DIH (importaciones de bases de datos programados).

También existe extracting request handler, que puede extraer contenido (y metadatos) de todo tipo de documentos enriquecidos (DOC, DOCX, PDF). Adicional: hay literal para establecer sus propios campos.


El controlador de solicitudes extracción almacena su producción en el campo text. El analizador de consultas q= y el resaltador asumen un campo predeterminado (sí, es pertinente para lo que hizo) de text. Puede especificar los campos para ellos; también los campos solr le devuelven resultados.