Servidor de búsqueda de texto completo de código abierto
Sphinx es un motor de búsqueda de texto completo que proporciona funcionalidad de búsqueda de texto a aplicaciones cliente.
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 conectarle una aplicación. Las implementaciones oficiales de la API están disponibles para los lenguajes PHP , Java , Perl , Ruby y Python . También se encuentran disponibles implementaciones no oficiales para otros idiomas, así como varios complementos y módulos de terceros [3] . Se pueden indexar otras fuentes de datos mediante canalización en un formato XML personalizado . [4]
EsfingeQL
El demonio de búsqueda Sphinx admite el protocolo de red binario MySQL y se puede acceder a él con la API y/o los clientes regulares de MySQL. Sphinx admite un subconjunto de SQL conocido como SphinxQL. Admite consultas estándar de todos los tipos de índices con SELECT, modificación de índices en tiempo real con INSERT, REPLACE y DELETE, y más.
EsfingeSE
Sphinx también puede proporcionar un motor de almacenamiento especial para bases de datos MariaDB y MySQL. Esto permite que MySQL y MariaDB se comuniquen 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 del indexador 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 proporcionados. Los campos de texto completo son el contenido resultante indexado por Sphinx; se pueden buscar (rápidamente) por palabras clave. Los campos tienen nombre y usted puede limitar sus búsquedas a un solo campo (por ejemplo, buscar solo por "título") o un subconjunto de campos (por ejemplo, solo por "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 Sphinx, sino que se descartan durante el proceso de indexación; Sphinx asume que usted almacena esos contenidos en otro lugar.
Atributos
Los atributos son valores adicionales asociados con cada documento que se pueden utilizar para realizar filtrado y clasificación adicionales durante la búsqueda. Los atributos se nombran. Los nombres de 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:
(desde 1.10-beta);
(desde 2.1.1-beta); [5] [6]
- 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 predefinidos. Funcionan bien cuando la mayoría de los datos almacenados en realidad tienen valores: asignar datos dispersos a columnas estáticas puede resultar engorroso. Supongamos, 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 HDD, 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 estar presentes o no en todos los documentos. Cuando intenta filtrar por una de estas claves, Sphinx ignorará los documentos que no tienen 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 ; cualquiera:
- 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 la esfinge
- Craigslist.org [8]
- Reclutamiento.aleph-graymatter.com [9]
- Tradebit.com [10]
- vBulletin.com [11]
- Extensión MediaWiki [12]
- Boardreader.com [13]
- OMBE.com [14]
- Limundo.com [14]
Lista de características
- Indexación de texto completo por lotes e incremental (suave en tiempo real).
- 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 y conectividad ODBC .
- Soporte de indexación de documentos XML.
- Soporte de búsqueda distribuida 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 hits"), derivaciones , formas de palabras, excepciones de tokenización y "caracteres combinados" (indexación dual como real carácter y un separador de palabras).
- Soporta UDF (desde 2.0.1).
Rendimiento y escalabilidad
- Velocidad de indexación de hasta 10-15 MB/s por núcleo y HDD.
- Velocidad de búsqueda de más de 500 consultas por segundo frente a 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. [15]
- La mayor instalación conocida que utiliza Sphinx, Boardreader.com, indexa 16 mil millones de documentos. [dieciséis]
- La instalación más activa conocida, Craigslist, atiende más de 300.000.000 de consultas al día [16] y más de 50 mil millones de páginas vistas al mes. [17]
Tenedor
En 2017, miembros clave del equipo original de Sphinx formaron una bifurcación del proyecto llamada Manticore. [18] [19] El equipo de Manticore se ha fijado el siguiente objetivo: ofrecer software gratuito rápido, estable y potente para la búsqueda de texto completo. El equipo de Manticore mantiene su código abierto y lo publica bajo licencia GPLv2 [20] en lugar de la búsqueda Original Sphinx, que cierra el código fuente de la tercera versión.
Ver también
Referencias
- ^ "3 de febrero de 2023. Lanzamiento de Sphinx 3.5.1" . Consultado el 15 de junio de 2023 .
- ^ "Pregúntale a Monty: Acerca de SphinxSE". kb.askmonty.org . Programa Monty AB . Consultado el 16 de agosto de 2013 .
- ^ "Sphinx Wiki: herramientas de terceros". sphinxsearch.com . Wiki de búsqueda de esfinge . Consultado el 16 de agosto de 2013 .
- ^ "xmlpipe2". sphinxsearch.com . Documentación de búsqueda de Sphinx . Consultado el 16 de agosto de 2013 .
- ^ "Atributos JSON en Sphinx 2.1.1". sphinxsearch.com . Blog de búsqueda de esfinge. 7 de febrero de 2013 . Consultado el 16 de agosto de 2013 .
- ^ "Compatibilidad total con JSON en el maletero". sphinxsearch.com . Blog de búsqueda de esfinge. 8 de agosto de 2013 . Consultado el 16 de agosto de 2013 .
- ^ "Sphinx | Servidor de búsqueda de código abierto".
- ^ "Esfinge en Craigslist". craigslist.org . Craiglist . Consultado el 17 de agosto de 2013 .
- ^ "Reclutamiento de GM". aleph-networks.com . Aleph-redes . Consultado el 1 de octubre de 2012 .
- ^ "Búsqueda de sitios PHP ultrarrápida". tradebit.com . Bit de cambio . Consultado el 17 de agosto de 2013 .
- ^ "Sphinx Search beta para Vbulletin 4.0". vbulletin.com . Vboletín . Consultado el 17 de agosto de 2013 .
- ^ "Extensión de búsqueda Sphinx para MediaWiki". mediawiki.org . MediaWiki: Svemir Brkic, Paul Grinberg . Consultado el 17 de agosto de 2013 .
- ^ "Desarrollado por Sphinx Search: Boardreader". sphinxsearch.com . Búsqueda de esfinge . Consultado el 17 de agosto de 2013 .
- ^ ab "Desarrollado por Sphinx". sphinxsearch.com/ .
- ^ "Acerca de la Esfinge". sphinxsearch.com . Búsqueda de esfinge . Consultado el 16 de agosto de 2013 .
- ^ ab "Desarrollado por Sphinx". sphinxsearch.com . Búsqueda de esfinge . Consultado el 10 de mayo de 2015 .
- ^ "Craigslist: hoja informativa". craigslist.org . Lista de Craigslist. Archivado desde el original el 5 de agosto de 2012 . Consultado el 16 de agosto de 2013 .
- ^ "Acerca de la búsqueda de Mantícora". manticoresearch.com . Consultado el 24 de abril de 2023 .
- ^ "Búsqueda de Mantícora - форк Sphinx: отчёт за 3 года". Хабр (en ruso) . Consultado el 24 de abril de 2023 .
- ^ "Сравниваем поисковики для сайта: Mantícora y Esfinge". Журнал (en ruso) . Consultado el 24 de abril de 2023 .
Otras lecturas
- Aksyonoff, Andrés (2011). Introducción a Search with Sphinx: desde la instalación hasta el ajuste de relevancia. Medios O'Reilly. 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
Wikilibros tiene un libro sobre el tema: Búsqueda de esfinge
- Página web oficial
- SphinxSE en la base de conocimiento MariaDB
- https://manticoresearch.com/ - Sitio de bifurcación de código abierto de Manticore.