tag optimized moz length images for example description alternative optimization lucene

optimization - moz - seo optimized images



Recoge todos los hits para una búsqueda en Lucene/Optimization (2)

Resumen : Recopilo los id. De doc de todas las visitas para una búsqueda dada utilizando un recopilador personalizado (rellena un BitSet con los identificadores). Los documentos de búsqueda y obtención de documentos son bastante rápidos de acuerdo con mis necesidades, pero cuando se trata de recuperar realmente los documentos del disco, las cosas se vuelven muy lentas. ¿Hay alguna forma de optimizar Lucene para una recopilación de documentos más rápida?

Detalles : estoy trabajando en un corpus procesado de Wikipedia y guardo cada oración como un documento separado. Cuando busco "computadora", obtengo todas las oraciones que contienen el término computadora. Actualmente, buscar en el corpus y obtener todas las identificaciones de documentos funciona en menos de un segundo, pero recuperar los primeros 1000 documentos lleva unos 20 segundos. La obtención de todos los documentos lleva proporcionalmente más tiempo (es decir, otros 20 segundos para cada lote de 1000 documentos).

Las búsquedas posteriores y la obtención de documentos requieren mucho menos tiempo (aunque no sé quién está haciendo el almacenamiento en caché, el sistema operativo o Lucene), pero buscaré términos diversos y no quiero confiar en el almacenamiento en caché. en la primera búsqueda es crucial para mí.

Estoy buscando sugerencias / trucos que mejoren el rendimiento de obtención de documentos (si es posible). ¡Gracias por adelantado!

Adición :

Uso Lucene 3.0.0 pero uso Jython para conducir clases de Lucene. Lo que significa que llamo al método get_doc de la siguiente clase Jython para cada ID de documento que recuperé durante la búsqueda:

class DocumentFetcher(): def __init__(self, index_name): self._directory = FSDirectory.open(java.io.File(index_name)) self._index_reader = IndexReader.open(self._directory, True) def get_doc(self, doc_id): return self._index_reader.document(doc_id)

Tengo 50 millones de documentos en mi índice.


Usted, probablemente, está almacenando mucha información en el documento. Reduzca los campos almacenados tanto como pueda.

En segundo lugar, al recuperar campos, seleccione solo los campos que necesita. Puede usar el siguiente método de IndexReader para especificar solo algunos de los campos almacenados.

public abstract Document document(int n, FieldSelector fieldSelector)

De esta manera, no carga los campos que no se utilizan.

Puede utilizar el siguiente ejemplo de código.

FieldSelector idFieldSelector = new SetBasedFieldSelector(Collections.singleton("idFieldName"), Collections.emptySet()); for (int i: resultDocIDs) { String id = reader.document(i, idFieldSelector).get("idFieldName"); }