Solr Schema.xml para búsqueda por facetas

Estamos implementando solr con la aplicación de comercio electrónico. El objetivo principal es una búsqueda más rápida y una mejor navegación del catálogo por facetas.

Sin embargo, el problema es que no podemos descubrir cómo asignar facetas dinámicas a Solr. Cuando digo faceta dinámica, me refiero a esto...

Samsung Galaxy S3

  • Categoría: Smartphone
  • Marca: Samsung
  • OS: Android
  • RAM: 1 GB
  • Procesador: 1 Ghz
  • Cámara: 8MP
  • Pantalla: 4.7 pulgadas
  • y, como..

Los criterios de filtrado, como SO, RAM, procesador, cámara, etc. son dinámicos para cada producto, algunos lo tienen y otros tienen un conjunto de criterios de filtro completamente diferente para las facetas. Entonces, cuando alguien haga clic en Android, se filtrará un resultado con todos los teléfonos Android en la categoría seleccionada.

Nos enfrentamos a un problema en el que no podemos decidir cómo se verá el solr schema.xml para admitir este tipo de diccionario de datos para la búsqueda por facetas.

preguntado el 12 de junio de 12 a las 14:06

Agregar un ejemplo de cómo abordaría este tipo de pregunta será una respuesta muy valiosa. -

2 Respuestas

Los campos dinámicos son lo que necesita.

Incluso podrías hacer esto:

product_name : samsung nexus
android_version_t : 4.0
partner_store_price_i : 19800

La _t y _i los sufijos se entenderán como texto y tipos enteros si establece su esquema de esa manera.

<dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
<dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
<dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
<dynamicField name="*_t"  type="text"    indexed="true"  stored="true"/>

http://www.tnrglobal.com/blog/2010/07/dynamic-fields-in-apache-solr/

http://wiki.apache.org/solr/SchemaXml#Dynamic_fields

Respondido el 13 de junio de 12 a las 08:06

Aitchnyu, también estoy enfrentando un problema similar. ¿Significa que, para cada atributo dinámico aplicado en el producto que necesita ser filtrado, debo tomarlos como campo dinámico? ¿Qué pasa con la búsqueda por facetas? ¿Es necesario definir esto en schema.xml? - Krunal

Sí, hay que definirlo. Y estos vienen con el esquema predeterminado. Es conveniente si tiene un índice que necesita almacenar una gran cantidad de campos: Jesvin José

¿Qué quiere decir cuando dice "Es conveniente si tiene un índice que necesita almacenar una gran cantidad de campos"? - Dharmik Bhandari

Bueno, sus productos pueden tener ~ 100 atributos que quizás no calcule de antemano cuando crea su índice por primera vez. En lugar de actualizar con frecuencia su esquema, puede usar campos dinámicos. - Jesvin José

Ampliando la respuesta anterior.

Puede tener campos como isSpecial, un booleano, specialCategoryType. En el caso anterior, se establecen en true y android.

Cuando se selecciona este elemento (isSpecial), puede refinar la consulta y agregar al predicado specialCategoryType: android.

Edit:

Digamos que hay dos productos, un teléfono Android y una computadora portátil Android. teléfono 1- sistema operativo: android; tipo:teléfono; cámara: 8MP; specCatFacet:os,tipo,cámara ; specCatRefine:os, escriba laptop- os:android; tipo: portátil; tamaño de pantalla: 13; specCatFacet:os,tipo,pantalla; specCatRefine:os, escriba teléfono 2 - os:android; tipo:teléfono; cámara: 4MP; specCatFacet:os, tipo, cámara; specCatRefine:os, tipo

Cuando las personas busquen Android, aparecerán los tres. Las facetas mostradas podrían ser una unión de ambos conjuntos de facetas.

Cuando se hace clic en un teléfono 1 o 2, miraría el campo specCatRefine y refinaría los criterios de búsqueda con os, escribiría y usaría specCatFacet para facetarlos posteriormente.

Cuando se hace clic en la computadora portátil, la búsqueda se refina en os, tipo y facetas en os, tipo, pantalla.

Esencialmente, el segundo término de búsqueda refinar y facetar se basa en un campo en cada documento. Su refinamiento de términos de búsqueda tendrá mucha de esta lógica sobre cómo crear los criterios.

Espero que esto ayude...

Respondido el 16 de junio de 12 a las 02:06

Hola, ¿puedes dar más detalles sobre esto? No entendí exactamente qué quieres decir con esto. - Krunal

Cuando un usuario hace clic en cierto tipo de producto, desea refinar los criterios originales del usuario agregando este tipo de producto. Desea hacer esto solo para ciertos tipos especiales (supuse). Entonces, el tipo booleano define si este es un tipo especial y el segundo para definir el valor. En esencia, no pensé que fuera necesaria una faceta "dinámica", sino afinar los criterios de búsqueda. - user1452132

Tampoco entendí esto ... ¿puedes explicarlo con un ejemplo? - Dharmik Bhandari

Un ejemplo también me será de mucha ayuda. - Krunal

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.