2010-11-08 10 views
12

He desarrollado una aplicación de índice y búsqueda con la biblioteca Lucene. pero esta biblioteca tiene algunas limitaciones en la clasificación personalizada en mi contexto, además de su rendimiento, necesito escalabilidad y acceso a todo tipo de frecuencias de palabras, etc. ¿Existe alguna poderosa biblioteca de texto completo de código abierto disponible? características¿Cuál es el mejor proyecto de fuente abierta de búsqueda de texto completo (se prefiere .NET)?

+2

He encontrado que el rendimiento con Lucene.net es increíble, así que es una sorpresa escuchar a alguien decir que tienen problemas con el rendimiento! (Por cierto, Lucene tiene una API bastante buena para la puntuación personalizada, etc.) –

+0

No tengo ningún problema con el rendimiento de lucene, pero la clasificación personalizada es muy difícil. – Ehsan

Respuesta

5

http://www.sphinxsearch.com

http://www.sphinxconnector.net/

Clave Sphinx son:

  • alta indexación y búsqueda de rendimiento;
  • herramientas avanzadas de indexación y consulta (tokenizador de texto flexible y rico en funciones, lenguaje de consulta, varios modos de clasificación diferentes, etc.);
  • conjunto de resultados avanzados postprocesamiento (SELECCIONE con expresiones, WHERE, ORDER BY, GROUP BY etc. sobre los resultados de búsqueda de texto);
  • probada escalabilidad hasta miles de millones de documentos, terabytes de datos y miles de consultas por segundo;
  • fácil integración con fuentes de datos SQL y XML, y las interfaces de búsqueda SphinxAPI, SphinxQL o SphinxSE;
  • escalado sencillo con búsquedas distribuidas.

Para ampliar un poco, Sphinx:

  • tiene alta velocidad de indexación (hasta 10-15 MB/seg por núcleo en un punto de referencia interno);
  • tiene una alta velocidad de búsqueda (hasta 150-250 consultas/seg por núcleo contra 1,000,000 de documentos, 1,2 GB de datos en un punto de referencia interno);
  • tiene una gran escalabilidad (los índices de clúster más grandes conocidos superan los 3,000,000,000 de documentos, y el más ocupado tiene un pico de más de 50,000,000 de consultas/día);
  • ofrece una buena clasificación de relevancia a través de la combinación del ranking de proximidad de frases y el ranking estadístico (BM25);
  • proporciona capacidades de búsqueda distribuida;
  • proporciona generación de fragmentos de documento (fragmentos);
  • proporciona la búsqueda desde la aplicación con las interfaces SphinxAPI o SphinxQL, y desde MySQL con el motor de almacenamiento SphinxSE enchufable;
  • admite booleano, frase, proximidad de palabra y otros tipos de consultas;
  • admite múltiples campos de texto completo por documento (hasta 32 por defecto);
  • admite múltiples atributos adicionales por documento (es decir.grupos, marcas de tiempo, etc.);
  • admite palabras vacías;
  • soporta diccionarios de formas morfológicas de palabras;
  • admite excepciones de tokenización;
  • admite codificaciones de un solo byte y UTF-8;
  • soporta stemming (stemmers para inglés, ruso y checo están incorporados, y los stemmers para francés, español, portugués, italiano, rumano, alemán, holandés, sueco, noruego, danés, finlandés, húngaro, están disponibles construyendo tercero biblioteca libstemmer de parte);
  • admite MySQL de forma nativa (se admiten todos los tipos de tablas, incluidos MyISAM, InnoDB, NDB, Archivo, etc.);
  • admite PostgreSQL de forma nativa;
  • admite bases de datos compatibles con ODBC (MS SQL, Oracle, etc.) de forma nativa;
  • ... tiene otras 50 funciones que no se encuentran aquí, consulte la API y el manual de configuración.
Cuestiones relacionadas