Pregunta

Estoy configurando un motor de búsqueda de Solr que indexará varios idiomas. Creé un UpdateProcessorFactory personalizado para averiguar qué secciones del texto de entrada son en qué idioma, y ??luego copio esas secciones del documento en campos específicos del idioma. Por ejemplo, con este texto:

" Hola mundo, Bonjour le Monde, Hallo Welt. "

Copia " Hello World " en el campo de texto, " Bonjour le Monde " en el campo de texto fr, y " Hallo Welt " en el campo de texto. Cada campo tiene los analizadores de lenguaje adecuados para tokenizar y detener las palabras.

Al final, me gustaría tener un cuadro para que un usuario ingrese los términos de búsqueda que buscarían en todos los idiomas. Los términos de búsqueda no necesitan ser traducidos, pero deben ser ordenados apropiadamente. Cuál es la mejor manera de lograr esto? También estoy muy preocupado por el rendimiento de las búsquedas.

¿Fue útil?

Solución

La mejor manera es utilizar el DisMaxRequestHandler . Analizará adecuadamente cada campo para el idioma apropiado (como se define en schema.xml).

Por lo tanto, si su consulta parece / solr / select? qt = dismax & amp; qf = en-text% 20fr-text% 20de-text & amp; q = hello% world Solr hará lo correcto.

(suponiendo que configuró dismax como solr.DisMaxRequestHandler en un bloque requestHandler en solrconfig.xml)

La mayoría del análisis es rápido. Sus límites de rendimiento se encuentran principalmente en el tamaño de su índice, los recuentos totales de términos, etc. Asegúrese de ajustar todo de acuerdo con la guía de rendimiento de solr en su wiki. Actualmente estoy ejecutando un índice de 60 GB y continúo obteniendo búsquedas en el rango de 100 ms por debajo de hardware que no es tan sofisticado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top