Sphinx es un motor de búsqueda de texto completo que proporciona la funcionalidad de búsqueda de texto a las aplicaciones cliente.
Desarrollador (es) | Andrew Aksyonoff |
---|---|
Versión inicial | 2001 |
Lanzamiento estable | 3.3.1 [1] / 6 de julio de 2020 |
Escrito en | C ++ |
Sistema operativo | Linux, Windows, Solaris, FreeBSD, NetBSD, Mac OS, AIX |
Tipo | Búsqueda e índice |
Licencia | GPLv2 y comercial; propietario desde la versión 3 |
Sitio web | sphinxsearch |
Descripción general
Sphinx se puede utilizar como servidor independiente o como motor de almacenamiento ("SphinxSE") para la familia de bases de datos MySQL. Cuando se ejecuta como un servidor independiente, Sphinx funciona de manera similar a un DBMS y puede comunicarse con MySQL , MariaDB y PostgreSQL a través de 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]
EsfingeAPI
Si Sphinx se ejecuta como un servidor independiente, es posible utilizar SphinxAPI para conectar una aplicación a él. Las implementaciones oficiales de la API están disponibles para los lenguajes PHP , Java , Perl , Ruby y Python . También están disponibles implementaciones no oficiales para otros lenguajes, así como varios complementos y módulos de terceros [3] . Se pueden indexar otras fuentes de datos a través de una tubería en un formato XML personalizado . [4]
SphinxQL
El demonio de búsqueda Sphinx admite el protocolo de red binario MySQL y se puede acceder a él con la API MySQL normal y / o los clientes. Sphinx admite un subconjunto de SQL conocido como SphinxQL. Admite la consulta estándar de todos los tipos de índices con SELECT, la modificación de índices de RealTime con INSERT, REPLACE y DELETE, y más.
SphinxSE
Sphinx también puede proporcionar un motor de almacenamiento especial para bases de datos MariaDB y MySQL. Esto permite que MySQL, MariaDB se comunique con Sphinx searchd
para ejecutar consultas y obtener resultados. Los índices Sphinx se tratan como tablas SQL normales. El motor de almacenamiento SphinxSE se envía con MariaDB.
Campos de texto completo e indexación
Sphinx está configurado para examinar un conjunto de datos a través de su indexador. El proceso Indexer crea un índice de texto completo (una estructura de datos especial que permite búsquedas rápidas de palabras clave) a partir de los datos / texto dados. Los campos de texto completo son el contenido resultante indexado por Sphinx; se pueden buscar (rápidamente) por palabras clave. Los campos se nombran y puede limitar sus búsquedas a un solo campo (p. Ej., Búsqueda a través de "título" solamente) o un subconjunto de campos (p. Ej., A "título" y "resumen" únicamente). El formato de índice de Sphinx generalmente admite hasta 256 campos. Tenga en cuenta que los datos originales no se almacenan en el índice Sphinx, pero se descartan durante el proceso de indexación; Sphinx asume que almacena esos contenidos en otro lugar.
Atributos
Los atributos son valores adicionales asociados con cada documento que se pueden utilizar para realizar un filtrado y una clasificación adicionales durante la búsqueda. Los atributos se nombran. Los nombres de los atributos no distinguen entre mayúsculas y minúsculas. Los atributos no están indexados en texto completo; se almacenan en el índice tal cual. Los tipos de atributos admitidos actualmente son:
- enteros sin signo (de 1 bit a 32 bits de ancho);
- Marcas de tiempo UNIX ;
- valores de coma flotante (32 bits, precisión simple IEEE 754);
- ordinales de cadena (enteros especialmente calculados);
- instrumentos de cuerda
(desde 1.10-beta);
- MVA, atributos de valores múltiples (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 el llamado esquema fijo , es decir, un conjunto de columnas de atributos predefinidas. Estos funcionan bien cuando la mayoría de los datos almacenados realmente tienen valores: la asignación de datos escasos a columnas estáticas puede ser engorrosa. Suponga, por ejemplo, que está ejecutando una comparación de precios o un sitio de subastas con muchas categorías de productos diferentes. Algunos de los atributos, como el precio o el proveedor, son idénticos en todos los productos. Pero a partir de ahí, para las computadoras portátiles, también necesita almacenar el peso, el tamaño de la pantalla, el tipo de disco duro, el tamaño de la RAM, etc. Y, digamos, para las palas, probablemente desee almacenar el color, la longitud del mango, etc. Por lo tanto, es manejable en una sola categoría, pero todos los campos distintos que necesita para todos los productos en todas las categorías son innumerables. El campo JSON se puede utilizar para solucionar este problema. Dentro del atributo JSON no necesitas una estructura fija. Puede tener varias claves que pueden o no estar presentes en todos los documentos. Cuando intente filtrar en una de estas claves, Sphinx ignorará los documentos que no tengan la clave en el atributo JSON y funcionará solo con aquellos documentos que la tengan.
Licencia
Hasta la versión 3, Sphinx tiene doble licencia ; ya sea:
- Licencia pública general GNU versión 2 o
- La licencia propietaria está disponible para casos de uso que no están dentro de los términos de 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 esfinge
Lista de características
- Indexación de texto completo por lotes e incremental (en tiempo real suave).
- Soporte para atributos que no son de texto ( escalares , cadenas, conjuntos , JSON).
- Indexación directa de bases de datos SQL. Soporte nativo para MySQL , MariaDB , PostgreSQL , MSSQL , además de conectividad ODBC .
- Soporte de indexación de documentos XML.
- Soporte de búsqueda distribuido listo para usar.
- Integración mediante API de acceso .
- Soporte de sintaxis similar a SQL a través del protocolo MySQL (desde 0.9.9)
- Sintaxis de búsqueda de texto completo.
- Procesamiento de conjuntos de resultados similar a una base de datos.
- Clasificación de relevancia utilizando factores adicionales además del estándar BM25 .
- Soporte de procesamiento de texto para 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 una carácter y un separador de palabras).
- Admite UDF (desde 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 / seg contra 1,000,000 de documentos / colección de 1.2 GB usando un sistema de escritorio de 2 núcleos con 2 GB de RAM. [15]
- La mayor instalación conocida que utiliza Sphinx, Boardreader.com, indexa 16 mil millones de documentos. [dieciséis]
- La instalación más concurrida conocida, Craigslist, atiende más de 300.000.000 de consultas / día [16] y más de 50.000 millones de páginas vistas / mes. [17]
Ver también
- Lista de bibliotecas de recuperación de información
Referencias
- ^ https://sphinxsearch.com/downloads/current/ .
- ^ "AskMonty: Acerca de SphinxSE" . http://kb.askmonty.org . Monty Program AB . Consultado el 16 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ "Sphinx Wiki: herramientas de terceros" . http://sphinxsearch.com . Wiki de búsqueda de la esfinge . Consultado el 16 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ "xmlpipe2" . http://sphinxsearch.com . Documentación de búsqueda de Sphinx . Consultado el 16 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ "Atributos JSON en Sphinx 2.1.1" . http://sphinxsearch.com . Blog de búsqueda de Sphinx . Consultado el 16 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ "Soporte completo de JSON en Trunk" . http://sphinxsearch.com . Blog de búsqueda de Sphinx . Consultado el 16 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ http://sphinxsearch.com/downloads/
- ^ "Esfinge en Craigslist" . http://craigslist.org . Craigslist . Consultado el 17 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ "Reclutamiento de GM" . http://www.aleph-networks.com . Aleph-redes . Consultado el 1 de octubre de 2012 . Enlace externo en
|website=
( ayuda ) - ^ "Búsqueda rápida de sitios PHP de iluminación" . http://tradebit.com . Tradebit . Consultado el 17 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ "Beta de Sphinx Search para Vbulletin 4.0" . http://vbulletin.com . Vbulletin . Consultado el 17 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ "Extensión de búsqueda Sphinx para MediaWiki" . http://mediawiki.org . MediaWiki: Svemir Brkic, Paul Grinberg . Consultado el 17 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ "Desarrollado por Sphinx Search: Boardreader" . http://sphinxsearch.com . Búsqueda de la esfinge . Consultado el 17 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ a b "Desarrollado por Sphinx" . sphinxsearch.com/ .
- ^ "Acerca de la esfinge" . http://sphinxsearch.com . Búsqueda de la esfinge . Consultado el 16 de agosto de 2013 . Enlace externo en
|website=
( ayuda ) - ^ a b "Desarrollado por Sphinx" . http://sphinxsearch.com . Búsqueda de la esfinge . Consultado el 10 de mayo de 2015 . Enlace externo en
|website=
( ayuda ) - ^ "Craigslist: hoja informativa" . http://www.craigslist.org . Craigslist. Archivado desde el original el 5 de agosto de 2012 . Consultado el 16 de agosto de 2013 . Enlace externo en
|website=
( ayuda )
Otras lecturas
- Aksyonoff, Andrew (2011). Introducción a la búsqueda con Sphinx: desde la instalación hasta el ajuste de 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/
enlaces externos
- Página web oficial
- SphinxSE en MariaDB KnowledgeBase