2011-08-04

Sphinx un sistema para hacer búsqueda de en nuestros sitio web con PHP



Sphinx un sistema para hacer búsqueda de en nuestros sitio web con PHP se integra con distinta base de datos. Es una alternativa interesante para solucionar cuando trabajamos con tablas InnoDB las cuales sabemos que no permite index FULLTEXT. También tiene la ventaja de ser multi-plataforma, Linux (RedHat, Ubuntu, etc), Windows, MacOS, Solaris, FreeBSD, etc... También es muy rápido y liviano ya que fue escrito en C++

Buscar a través de SphinxAPI es tan simple con tres líneas de código, y la consulta a través de SphinxQL es aún más simple, con consultas de búsqueda se expresa en SQL.

Quien sitio web lo utiliza, en producción?
 Sphinx escala hasta miles de millones de documentos y decenas de millones de consultas de búsqueda por día, alimentando principales sitios web como Craigslist, , Dailymotion , NetLog , etc

Y por último pero no menos importante, que es de código abierto bajo GPLv2, y la edición de la comunidad es libre de usar.

Características a grandes rasgos:
  • Alta velocidad de indexación (hasta 10 MB / seg en las modernas CPUs)
  • Alta velocidad de búsqueda (consulta media está en 0,1 segundos en colecciones de textos 2.4 GB)
  • Alta escalabilidad (hasta 100 GB de texto, hasta 100 M documentos en una única CPU)
  • Soporta búsqueda distribuida (desde v.0.9.6)
  • MySQL soporta de forma nativa (tablas MyISAM e InnoDB son compatibles)
  • Soporta la búsqueda de la frase
  • Apoya ranking frase de proximidad, ofreciendo un buen relevancia
  • Admite cualquier número de campos del documento (el peso se pueden cambiar sobre la marcha)
  • Apoya a los grupos de documentos
  • Apoya las palabras vacías
  • Soporta diferentes modos de búsqueda ("contienen todas", "búsqueda de frases" y "ningún resultado" a partir de v.0.9.5)
  • Interfaz genérica XML que simplifica enormemente la integración personalizada
  • PHP puro (es decir, NO módulo compilar etc) búsqueda del cliente API
 Rendimiento y escalabilidad:
  • Rendimiento de la indización. Índices Sphinx hasta 10-15 MB de texto por segundo por cada núcleo CPU, que es de 60 MB / seg por servidor (en una máquina dedicada indexación).
  • Buscando el rendimiento. Buscando a través de 1.000.000 de documentos, 1,2 GB de recogida de texto que usamos para el desarrollo de todos los días y las pruebas se ejecuta en 500 consultas / seg en una máquina de escritorio de 2 hilos con 2 GB de RAM.
  • Mayor escalabilidad. Conocidos índices cluster Sphinx casi 5 millones de documentos, lo que resulta en más de 6 TB de datos. Mayor actividad conocida es, unsurpisingly, Craiglist , top-10 en los EE.UU. sitio web que sirve de 50 millones de consultas / día.
Características clave:
  • Por lotes y en tiempo real, índices de texto completo. Dos backends índice de apoyo tanto a la construcción eficiente de índice sin conexión andincremental sobre la marcha las actualizaciones de índice están disponibles.
  • No los atributos de texto de apoyo. Un número arbitrario de atributos (ID de producto, nombres de compañías, precios, etc) se pueden almacenar en el índice y utilizarse sólo para retrieveal (para evitar golpear la base de datos), o para una eficiente esfinge del lado de resultados de búsqueda conjunto de post-procesamiento.
  • Indexación de bases de datos SQL.Sphinx  puede acceder directamente a los datos almacenados en el índice de MySQL (todos los motores de almacenamiento son compatibles), PostgreSQL, Oracle, Microsoft SQL Server, SQLite, llovizna, y todo lo que soporta ODBC.
  • No son de SQL indexación de almacenamiento. Los datos también pueden ser escuchados a indexador de lotes en un sencillo formato XML llamado XMLpipe, o insertar directamente en un índice incremental RT.
  • Integración de aplicaciones de fácil. Esfinge viene con tres diferentes APIs, SphinxAPI, SphinxSE y SphinxQL. SphinxAPI es una librería nativa para Java, PHP, Python, Perl, C, y otros idiomas. SphinxSE, un motor de almacenamiento conectables para MySQL, permite a los enormes conjuntos de resultados se envían directamente al servidor de MySQL para el procesamiento posterior. SphinxQL permite la Sphinx consulta de aplicaciones utilizando la biblioteca estándar de cliente de MySQL y la sintaxis de consulta.
  • Avanzada búsqueda de texto completo de sintaxis. Nuestro motor de consulta admite consultas arbitrariamente compleja combinación de operadores booleanos, una frase, la proximidad, por riguroso orden, y se pongan quórum de campo, y los límites de posición, la coincidencia exacta forma de palabras clave, búsquedas de subcadenas, etc
  • Rica base de datos de características similares a la consulta. Sphinx no se limite sólo a la búsqueda de palabras clave. En la parte superior del texto completo conjunto de resultados de búsqueda, se puede calcular expresiones aritméticas arbitrarias, añadir condiciones WHERE, ORDER BY, GROUP BY, el uso MIN / MAX / AVG / SUM, etc agregados Esencialmente, en toda regla SQL SELECT es compatible.
  • Relevancia una mejor clasificación. A diferencia de muchos otros motores, la Sphinx no depender sólo de 30 años de edad, clasificación estadística de que sólo tiene en cuenta las frecuencias de palabras clave, ni los límites que a la misma. De manera predeterminada, la Sphinx, además, analiza la proximidad de palabras clave, y se ubica más cerca de la frase coincide con mayores, con partidos perfecta entre las mejores. Además, la clasificación es flexible: se puede elegir entre una serie de funciones de relevancia incorporado, ajustar su peso mediante el uso de expresiones, o desarrollar otros nuevos.
  • Procesamiento de textos características flexibles de indexación Sphinx incluye soporte completo para SBCS y UTF-8 codificaciones (lo que significa que efectivamente todas las lenguas del mundo son compatibles), eliminación de palabras vacías y el retiro opcional de la posición de golpe (de indexación sin hits), la morfología y el procesamiento de sinónimo a través de formas de la palabra los diccionarios y lematizadores , las excepciones y los caracteres mezclados, y muchos más.
  • Búsquedas búsqueda distribuida. Se pueden distribuir entre varios equipos, lo que permite horizontal scale-out y HA (alta disponibilidad).


Link al sitio oficial: sphinxsearch.com

Link a distinto tutoriales:



No hay comentarios: