2009-11-10 14 views
5

ok, soy totalmente nuevo en SOLR y Lucene, pero tengo a Solr corriendo de la caja bajo Tomcat 6.x y acabo de repasar algunas de las entradas básicas de Wiki.¿Cuál es el mejor enfoque para usar SOLR con proyectos web?

Tengo algunas preguntas, y también necesito algunas sugerencias.

  1. Solr puede indexar datos en archivos (XML, CSV) y también puede indexar bases de datos. ¿También puede apuntarlo a un URI/dominio y hacer que indexe un sitio web de la manera en que google lo haría?

  2. Si tengo un sitio web con datos de "Páginas", "Nombre de página", "Contenido de página", etc. y "Datos de productos", "Nombre de producto", "SKU", etc., necesito dos ¿Archivos Schema.xml? y si es así, ¿eso significa dos instancias diferentes de Solr?

Por último, si usted tiene un proyecto con una gran base de datos relacional y normalizada, ¿cuál diría que es el mejor enfoque de las 3 opciones siguientes ?:

  1. tener un servicio que se ejecuta en el middleware el fondo, que extrae la base de datos y crea manualmente los archivos XML relevantes para luego enviarlos a SOLR

  2. Haga que SOLR indexe la base de datos directamente. En este caso, ¿sería mejor simplemente señalar SOLR a las vistas, que abstraería todas las relaciones de la tabla?

  3. ¿Alguna otra opción que desconozco?

Contexto: Nos estamos quedando en un entorno Windows 2003, .NET 3.5, SQL Server 2005/2008

saludos!

Respuesta

7
  1. No, necesita un rastreador para eso, p. Nutch
  2. Sí, quiere dos índices separados (= dos schema.xml) ya que los conjuntos de datos no parecen estar relacionados. Esto no significa dos instancias de Solr, puede administrar los dos índices con Cores.

En cuanto a poblar el índice de Solr, depende de su proyecto en particular, por ejemplo, puede tolerar datos obsoletos o tiene que ser absolutamente nuevo.

Otras opciones a los datos de índice incluyen:

  • base de datos activa
  • Si está utilizando algún tipo de ORM utilizar sus capacidades de interceptación. Por ejemplo, puede utilizar eventos NHibernate para actualizar el índice en la actualización, inserción o eliminación. Si utiliza NHibernate y SolrNet esto es taken care of automatically
+0

+1 Gracias Mauricio, esto es realmente útil. Me pregunto si podrías ampliar un poco en un punto, posiblemente dos. En términos de datos nuevos y obsoletos, ¿qué fuente de datos utilizo no importa? solo la frecuencia con la que confirmo los cambios ... suponiendo que todas las confirmaciones (agregar/actualizar/eliminar) deben hacerse manualmente ¿no? En cuanto a SolrNet, ¿no necesito preocuparme por la comunicación manualmente con SOLR? gracias de nuevo – andy

+1

sobre la frescura de los datos: depende del * usuario * (consumidor) de los datos. Si el consumidor necesita * siempre * ver datos actualizados que descartarían los métodos de indexación fuera de línea/en segundo plano y tendría que ir con algo más reactivo, como desencadenantes o intercepción ORM. Por supuesto, al indexar páginas web no obtiene ningún "activador", su única opción es un rastreador. Sí, SolrNet maneja .Net <-> comunicación Solr. –

+0

@mauricio: gracias hombre. Usamos un CMS personalizado para construir nuestro sitio. Entonces, ¿sería una decisión inteligente pensar si solo se comprometen las actualizaciones/eliminaciones en Solr a través de XML cada vez que las páginas/productos se editan en el CMS? Además, no usamos NHybernate, así que supongo que no hay beneficios para SolrNet. gracias de nuevo, esto es realmente útil – andy

1

Creo que Mauricio está muerto por su consejo. El único punto que señalaría es que al decidir tener un indizador de "middleware", o usar la base de datos directamente. Si su base de datos (o las vistas?) Se relaciona muy de cerca con lo que un buen esquema de Solr quiere, entonces DIH es genial.Pero, si está indexando desde múltiples fuentes de datos, o si tiene que compartir los datos en su base de datos para encontrar lo que a Solr le gustaría, entonces tener un indexador de middleware dedicado es mejor.

+0

Y por "muerto", quiero decir muy preciso! ¡Por si acaso alguien estaba confundido! –

+0

genial, gracias por el consejo adicional Eric. Me preguntaba si tener el middleware era totalmente estúpido, pero creo que tiene sentido en un entorno donde, como dices, las fuentes de datos son variadas. ¡aclamaciones! +1 – andy

Cuestiones relacionadas