Solr es escalable,permitiendo realizar búsquedas distribuidas y replicación de índices,y actualmente se está usando en muchos de los sitios más grandes de Internet.

La principal característica de Solr (o al menos la más útil) es su API estilo REST,ya que en vez de usar drivers o APIs programáticas para comunicarnos con Solr podemos hacer peticiones HTTP y obtener resultados en XML o JSON. (por cierto,por si tienen curiosidad,se pronuncia «Solar» y no es un acrónimo).

Solr no expone una interfaz REST «perfecta» (que use todos los principios de HTTP 1.1),pero los datos tienen una representación simple que viaja entre el cliente y el servidor,sin ninguna encapsulación rara con SOAP u otras pesadillas. Además,los XML son legibles por personas,y JSON se puede usar para consumir con JavaScript y realizar pruebas.

Las ventajas de usar esta interfaz universal (y no propia de un lenguage) son varias:

Es agnótico del lenguaje porque usa XML y JSON,que hoy en día pueden ser interpretados por casi cualquier cosa. La métrica generalmente es JavaScript: si podemos interpretarlo con JavaScript dentro de todas las limitaciones que impone un navegador,entonces lo podemos interpretar en cualquier otro lugar. Por supuesto,JavaScript tiene soporte nativo para JSON y XML.

Es agnóstico de los tipos de datos,ya que HTTP sólo transmite textos. Los lenguajes dinámicos como PHP tienen éxito porque su protocolo básico no tiene tipos estrictos. Si la presentación lo va a mostrar por pantalla,¿por qué no debería alcanzar con un string?

Más o menos es un protocolo estándar (aunque la representación de datos no lo sea): si alguien inventa una base de datos y publica sus propio protocolo binario de comunicación,tendríamos muchas más librerías.

Solr está escrito en Java,pero lo podemos usar con nuestro lenguaje preferido,simplemente usando las peticiones GET para realizar búsquedas en el índice,y POST para agregar documentos.

Por supuesto suele haber una librería para cada lenguaje de programación que encapsula la interfaz REST,pero es muy simple construir una librería con,por ejemplo,JavaScript,e igualmente no es obligatorio usarla. Todo esto nos lleva a otro punto: si Solr tuviera una interfaz binaria como MySQL,¿cómo podríamos invocarla desde JavaScript? HTTP es universal ya que hoy en día hasta casi un secador de pelo puede hacer invocaciones HTTP.