2011-01-09 25 views

Respuesta

26

Sugiero que lea Full Text Search Engines vs. DBMS. Un line-line sería: si la mayor parte de su caso de uso es la búsqueda de texto completo, use Lucene. Si la mayor parte de su caso de uso es uniones y otras operaciones relacionales, use una base de datos. Puede usar una solución híbrida para un caso de uso más complicado.

+0

He visto "buscar en nuestro sitio" en muchos sitios. Si voy a buscar el contenido de los sitios, ¿cuál sería mejor? –

+1

La búsqueda en un sitio es búsqueda de texto completo. Por lo tanto, Lucene es mejor. Mejor aún, use Solr: http://lucene.apache.org/solr/ –

+0

@YuvalF si la base de datos no es grande y el usuario de ese sitio no es tantos, ¿basta con la consulta de texto completo basada en DBMS? ya que a veces, si ese tipo quiere usar lucene, debe desarrollarlo solo ... – hugemeow

1

La búsqueda de Lucene tiene la ventaja de la indexación. La publicación This puede ayudarlo a comprender lucene.

+0

creo que también podemos agregar un índice en la tabla de la base de datos. pero no tengo ni idea de qué es? –

18

Uso Lucene cuando se desea índice textual Documentos (de cualquier longitud) y la búsqueda de texto dentro de esos documentos, devolviendo una lista clasificada de documentos que coinciden con la consulta de búsqueda. El ejemplo clásico son los motores de búsqueda, como Google, que usan indexadores de texto como Lucene para indexar y consultar el contenido de las páginas web.

Las ventajas de utilizar Lucene sobre una base de datos como MySQL, para la indexación y búsqueda de texto son:

  • para el desarrollador - herramientas para analizar, analizar y la información del índice textual (por ejemplo, derivados, plurales, sinónimos, tokenización) en múltiples idiomas. Lucene también se adapta muy bien para la búsqueda de texto.
  • para el usuario - resultados de búsqueda de calidad. Lucene usa una muy buena similarity function (para comparar la consulta de búsqueda con cada documento), en el centro de la cual se encuentran la frecuencia de similitud cosenoidal y la de término/documento inverso. Esto da como resultado buenos resultados de búsqueda con muy pocos ajustes necesarios por adelantado.

Muchos de useful info on Lucene here.

+0

hay alguna alternativa más ventajosa a Lucene. Opensource or owner (Paid or REST API) –

2

Utilizamos Sql Server en el trabajo para realizar algunas consultas que utilizaban la búsqueda de texto completo. En el caso de grandes cantidades de datos, Sql realiza una combinación interna entre el conjunto de resultados devuelto por FullText y el resto de la consulta, que puede ser lenta si la base de datos se ejecuta en la máquina de baja potencia (2 GB de RAM para 20 GB de datos). Cambiar la misma consulta a Lucene mejoró considerablemente la velocidad.

Cuestiones relacionadas