Articulo de referencia

Esfinge (motor de búsqueda)

Sphinx es un motor de búsqueda de texto completo que proporciona funcionalidad de búsqueda de texto a las aplicaciones cliente. Descripción general Sphinx puede utilizarse como ...

Sphinx es un motor de búsqueda de texto completo que proporciona funcionalidad de búsqueda de texto a las aplicaciones cliente.

Descripción general

Sphinx puede utilizarse como servidor independiente o como motor de almacenamiento ("SphinxSE") para la familia de bases de datos MySQL. Cuando se ejecuta como servidor independiente, Sphinx funciona como un sistema de gestión de bases de datos ( DBMS ) y puede comunicarse con MySQL , MariaDB y PostgreSQL mediante sus protocolos nativos o con cualquier DBMS compatible con ODBC a través de ODBC . MariaDB , una bifurcación de MySQL, se distribuye con SphinxSE. [ 2 ]

API de Sphinx

Si Sphinx se ejecuta como un servidor independiente, es posible usar SphinxAPI para conectar una aplicación. Existen implementaciones oficiales de la API para PHP , Java , Perl , Ruby y Python . También hay implementaciones no oficiales para otros lenguajes, así como varios complementos y módulos de terceros [ 3 ] . Se pueden indexar otras fuentes de datos mediante una tubería en un formato XML personalizado [ 4 ] .

SphinxQL

El demonio de búsqueda Sphinx admite el protocolo de red binario de MySQL y se puede acceder a él mediante la API y/o los clientes habituales de MySQL. Sphinx admite un subconjunto de SQL conocido como SphinxQL. Permite realizar consultas estándar de todos los tipos de índices con SELECT, modificar índices en tiempo real con INSERT, REPLACE y DELETE, entre otras funciones.

EsfingeSE

Sphinx también ofrece un motor de almacenamiento especial para bases de datos MariaDB y MySQL. Esto permite que MySQL y MariaDB se comuniquen con Sphinx searchdpara ejecutar consultas y obtener resultados. Los índices de Sphinx se tratan como tablas SQL convencionales. El motor de almacenamiento SphinxSE viene incluido con MariaDB.

Campos de texto completo e indexación

Sphinx está configurado para examinar un conjunto de datos mediante su indexador. El proceso de indexación crea un índice de texto completo (una estructura de datos especial que permite búsquedas rápidas por palabras clave) a partir de los datos/texto proporcionados. Los campos de texto completo son el contenido resultante que indexa Sphinx; se pueden buscar (rápidamente) por palabras clave. Los campos tienen nombre y se pueden limitar las búsquedas a un solo campo (por ejemplo, buscar solo en "título") o a un subconjunto de campos (por ejemplo, solo en "título" y "resumen"). El formato de índice de Sphinx generalmente admite hasta 256 campos. Tenga en cuenta que los datos originales no se almacenan en el índice de Sphinx, sino que se descartan durante el proceso de indexación; Sphinx asume que usted almacena ese contenido en otro lugar.

Atributos

Los atributos son valores adicionales asociados a cada documento que se pueden usar para realizar filtrado y ordenación adicionales durante la búsqueda. Los atributos tienen nombre. Los nombres de los atributos no distinguen entre mayúsculas y minúsculas. Los atributos no se indexan a nivel de texto completo; se almacenan en el índice tal cual. Los tipos de atributos compatibles actualmente son:

(desde la versión 1.10-beta);

(desde 2.1.1-beta); [ 5 ] [ 6 ]

  • MVA, atributos multivalor (listas de longitud variable de enteros sin signo de 32 bits).

Atributos JSON en Sphinx

Sphinx, al igual que las bases de datos SQL clásicas, funciona con un esquema fijo , es decir, un conjunto de columnas de atributos predefinidas. Esto funciona bien cuando la mayoría de los datos almacenados tienen valores: asignar datos dispersos a columnas estáticas puede ser engorroso. Supongamos, por ejemplo, que gestiona un sitio de comparación de precios o una subasta con muchas categorías de productos diferentes. Algunos atributos, como el precio o el proveedor, son idénticos para todos los productos. Pero, además, para los portátiles, también necesita almacenar el peso, el tamaño de la pantalla, el tipo de disco duro, la memoria RAM, etc. Y, por ejemplo, para las palas, probablemente quiera almacenar el color, la longitud del mango, etc. Así que es manejable para una sola categoría, pero todos los campos distintos que necesita para todos los productos en todas las categorías son muchísimos. El campo JSON puede utilizarse para solucionar esto. Dentro del atributo JSON no necesita una estructura fija. Puede tener varias claves que pueden o no estar presentes en todos los documentos. Cuando intente filtrar por una de estas claves, Sphinx ignorará los documentos que no tengan la clave en el atributo JSON y trabajará solo con aquellos documentos que sí la tengan.

Licencia

Hasta la versión 3, Sphinx tiene doble licencia ; ya sea:

  1. Licencia Pública General GNU versión 2 o
  2. Se pueden solicitar licencias propietarias para casos de uso que no se ajusten a los términos de la GNU GPLv2.

Desde la versión 3, Sphinx se ha convertido en propietario, con la promesa de publicar su código fuente en el futuro [ 7 ].

Ejemplos de uso de la esfinge

  • Craigslist.org [ 8 ]
  • Tradebit.com [ 9 ]
  • vBulletin.com [ 10 ]
  • Extensión de MediaWiki [ 11 ]
  • Boardreader.com [ 12 ]
  • OMBE.com [ 13 ]
  • Limundo.com [ 13 ]

Lista de características

  • Indexación de texto completo por lotes e incremental (en tiempo real flexible).
  • Compatibilidad con atributos que no son de texto ( escalares , cadenas, conjuntos , JSON).
  • Indexación directa de bases de datos SQL. Compatibilidad nativa con MySQL , MariaDB , PostgreSQL , MSSQL y conectividad ODBC .
  • Compatibilidad con la indexación de documentos XML.
  • Soporte para búsqueda distribuida listo para usar.
  • Integración mediante API de acceso .
  • Compatibilidad con sintaxis similar a SQL mediante el protocolo MySQL (desde la versión 0.9.9).
  • Sintaxis de búsqueda de texto completo.
  • Procesamiento de conjuntos de resultados similar al de una base de datos.
  • Clasificación de relevancia utilizando factores adicionales además del estándar BM25 .
  • Compatibilidad con el procesamiento de texto para las codificaciones SBCS y UTF-8 , palabras vacías , indexación de palabras que se sabe que no aparecen en la base de datos ("sin coincidencias"), derivación , formas de palabras, excepciones de tokenización y "caracteres combinados" (indexación dual como carácter real y separador de palabras).
  • Admite UDF (desde la versión 2.0.1).

Rendimiento y escalabilidad

  • Velocidad de indexación de hasta 10-15 MB/seg por núcleo y disco duro.
  • Velocidad de búsqueda de más de 500 consultas/segundo en una colección de 1.000.000 de documentos/1,2 GB utilizando un sistema de escritorio de 2 núcleos con 2 GB de RAM. [ 14 ]
  • La instalación más grande conocida que utiliza Sphinx, Boardreader.com, indexa 16 mil millones de documentos. [ 15 ]
  • La instalación más activa conocida, Craigslist, atiende más de 300.000.000 de consultas al día [ ​​15 ] y más de 50.000 millones de páginas vistas al mes. [ 16 ]

Tenedor

En 2017, miembros clave del equipo original de Sphinx bifurcaron el proyecto bajo el nombre de Manticore, [ 17 ] con la intención de corregir errores y desarrollar nuevas características. [ 18 ] A diferencia de Sphinx, Manticore continúa publicándose como código abierto bajo la versión 3 de la GPL . [ 19 ]

Véase también

Referencias

  1. "29 de marzo de 2024. Lanzamiento de Sphinx 3.7.1" .
  2. "AskMonty: Acerca de SphinxSE" . kb.askmonty.org . Monty Program AB . Consultado el 16 de agosto de 2013 .
  3. "Sphinx Wiki: Herramientas de terceros" . sphinxsearch.com . Sphinx Search Wiki . Consultado el 16 de agosto de 2013 .
  4. "xmlpipe2" . sphinxsearch.com . Documentación de Sphinx Search . Consultado el 16 de agosto de 2013 .
  5. "Atributos JSON en Sphinx 2.1.1" . sphinxsearch.com . Blog de Sphinx Search. 7 de febrero de 2013. Consultado el 16 de agosto de 2013 .
  6. "Soporte completo para JSON en Trunk" . sphinxsearch.com . Blog de Sphinx Search. 8 de agosto de 2013. Consultado el 16 de agosto de 2013 .
  7. "Sphinx | ​​Servidor de búsqueda de código abierto" .
  8. "Esfinge en Craigslist" . craigslist.org . Craigslist . Consultado el 17 de agosto de 2013 .
  9. "Búsqueda ultrarrápida en sitios PHP" . tradebit.com . Tradebit . Consultado el 17 de agosto de 2013 .
  10. "Sphinx Search beta para Vbulletin 4.0" . vbulletin.com . Vbulletin. 27 de abril de 2010. Consultado el 17 de agosto de 2013 .
  11. "Extensión de búsqueda Sphinx para MediaWiki" . mediawiki.org . MediaWiki: Svemir Brkic, Paul Grinberg . Consultado el 17 de agosto de 2013 .
  12. "Desarrollado por Sphinx Search: Boardreader" . sphinxsearch.com . Sphinx Search . Consultado el 17 de agosto de 2013 .
  13. 1 2 "Desarrollado por Sphinx" . sphinxsearch.com/ .
  14. "Acerca de Sphinx" . sphinxsearch.com . Búsqueda de Sphinx . Consultado el 16 de agosto de 2013 .
  15. 1 2 "Desarrollado por Sphinx" . sphinxsearch.com . Búsqueda Sphinx . Consultado el 10 de mayo de 2015 .
  16. "Craigslist: Hoja informativa" . craigslist.org . Craigslist. Archivado del original el 5 de agosto de 2012. Consultado el 16 de agosto de 2013 .
  17. "Acerca de Manticore Search" . manticoresearch.com . Consultado el 24 de abril de 2023 .
  18. "Búsqueda de Manticore: 3 años después de separarse de Sphinx" . manticoresearch.com . Consultado el 2 de mayo de 2024 .
  19. "manticoresoftware/manticoresearch" . GitHub . Consultado el 2 de mayo de 2024 .

Lecturas adicionales

  • Aksyonoff, Andrew (2011). Introducción a la búsqueda con Sphinx: De la instalación a la optimización de la relevancia . O'Reilly Media. ISBN 978-0-596-80955-3.
  • Ali, Abbas (2011). Guía para principiantes de Sphinx Search . Birmingham, Inglaterra: Packt Publishing. ISBN 978-1-84951-254-1.
  • No más código abierto (2017) https://sphinxsearch.com/blog/2017/07/24/sphinx-2017/
  • Sitio web oficial
  • SphinxSE en la base de conocimientos de MariaDB
  • https://manticoresearch.com/ - Sitio web de la bifurcación de código abierto de Manticore.