Clase IndexWriter
An Escritor de índices crea y mantiene un índice.
Herencia
Asamblea: DistribuidoLucene.Net.dll
Sintaxis
public class IndexWriter : IDisposable, ITwoPhaseCommit, IIdentifiableSurrogate
observaciones
La modo abierto opción de modo abierto determina si se crea un nuevo índice o si se abre un índice existente. Tenga en cuenta que puede abrir un índice con CREAR incluso mientras los lectores están usando el índice. Los lectores antiguos continuarán buscando la instantánea de "punto en el tiempo" que habían abierto y no verán el índice recién creado hasta que vuelvan a abrir. Si CREATE_OR_APPEND se utiliza Escritor de índices creará un nuevo índice si aún no hay un índice en la ruta proporcionada y, de lo contrario, abrirá el índice existente.
En cualquier caso, los documentos se agregan con AddDocument(IEnumerable ) y eliminado con Eliminar documentos (plazo) or Eliminar Documentos (Consulta). Un documento se puede actualizar con ActualizarDocumento(Término, IEnumerable ) (que simplemente elimina y luego agrega todo el documento). Cuando termine de agregar, eliminar y actualizar documentos, Disponer() debería ser llamado.
Estos cambios se almacenan en la memoria y se descargan periódicamente al Directorio (durante las llamadas al método anterior). Se activa un vaciado cuando hay suficientes documentos agregados desde el último vaciado. El vaciado se desencadena por el uso de RAM de los documentos (ver RAMTamaño del búferMB) o el número de documentos añadidos (ver MaxBufferedDocs). El valor predeterminado es vaciar cuando llega el uso de RAM DEFAULT_RAM_BUFFER_SIZE_MB MEGABYTE. Para obtener la mejor velocidad de indexación, debe purgar el uso de RAM con un búfer de RAM grande. Además, si Escritor de índices alcanza el número configurado de eliminaciones en búfer (ver Términos de eliminación máxima en búfer) los términos y consultas eliminados se vacían y se aplican a los segmentos existentes. A diferencia de las otras opciones de descarga RAMTamaño del búferMB y MaxBufferedDocs, los términos eliminados no desencadenarán un vaciado de segmento. Tenga en cuenta que el lavado solo mueve el estado almacenado en el búfer interno en Escritor de índices en el índice, pero estos cambios no son visibles para Lector de índices hasta que Cometer() or Disponer() se llama. Un vaciado también puede desencadenar una o más fusiones de segmentos que, de forma predeterminada, se ejecutan con un subproceso en segundo plano para no bloquear las llamadas de addDocument (ver a continuación por cambiar el Lucene.Net.Index.IndexWriter.mergeScheduler).
Abriendo un Escritor de índices crea un archivo de bloqueo para el directorio en uso. Intentando abrir otro Escritor de índices en el mismo directorio conducirá a un LockObtainFailedException. LockObtainFailedException también se lanza si un Lector de índices en el mismo directorio se utiliza para eliminar documentos del índice.
Experto: Escritor de índices permite un opcional IndexDeletionPolicyIndexDeletionPolicy implementación a especificar. Puede usar esto para controlar cuándo se eliminan las confirmaciones anteriores del índice. La política predeterminada es KeepOnlyLastCommitDeletionPolicy que elimina todas las confirmaciones anteriores tan pronto como se realiza una nueva confirmación (esto coincide con el comportamiento anterior a 2.2). La creación de su propia política puede permitirle mantener activas explícitamente las confirmaciones de "punto en el tiempo" anteriores en el índice durante algún tiempo, para permitir que los lectores se actualicen a la nueva confirmación sin que se elimine la confirmación anterior. Esto es necesario en sistemas de archivos como NFS que no admiten la semántica "eliminar en el último cierre", en la que normalmente se basa la búsqueda de "punto en el tiempo" de Lucene.
Experto: Escritor de índices le permite cambiar por separado el Lucene.Net.Index.IndexWriter.mergePolicy y del Lucene.Net.Index.IndexWriter.mergeScheduler. los Lucene.Net.Index.IndexWriter.mergePolicy se invoca cada vez que hay cambios en los segmentos del índice. Su función es seleccionar qué fusiones hacer, si las hay, y devolver un MergePolicy.MergeSpecification describiendo las fusiones. El valor predeterminado es LogByteSizeMergePolicy. Entonces el Programador de fusión se invoca con las fusiones solicitadas y decide cuándo y cómo ejecutar las fusiones. El valor predeterminado es ConcurrentMergeSchedulerConcurrentMergeScheduler.
NOTA: si golpeas un
NOTA: Escritor de índices las instancias son completamente seguras para subprocesos, lo que significa que varios subprocesos pueden llamar a cualquiera de sus métodos al mismo tiempo. Si su aplicación requiere sincronización externa, debe no sincronizar en el Escritor de índices instancia ya que esto puede causar interbloqueo; use sus propios objetos (que no sean de Lucene) en su lugar.
NOTA: si llamas
Constructores
Nombre | Descripción |
---|---|
IndexWriter(Directorio, IndexWriterConfig) | Construye un nuevo Escritor de índices según los ajustes dados en NOTA: después de que se crea este escritor, la instancia de configuración dada no se puede pasar a otro escritor. Si tiene la intención de hacerlo, debe Clon() de antemano. |
Terrenos
Nombre | Descripción |
---|---|
MAX_TERM_LENGTH | Longitud máxima absoluta absoluta para un término, en bytes una vez codificado como UTF8. Si llega un término del analizador más largo que esta longitud, un
|
FUENTE | Clave para la fuente de un segmento en el Diagnóstico. |
FUENTE_ADDINDEXES_LECTORES | Fuente de un segmento que resulta de una llamada a Agregar índices (IndexReader []). |
FUENTE_FLUSH | Fuente de un segmento que resulta de un rubor. |
FUENTE_MERGE | Fuente de un segmento que resulta de una fusión de otros segmentos. |
ESCRIBIR_BLOQUEO_NOMBRE | Nombre del bloqueo de escritura en el índice. |
Propiedades
Nombre | Descripción |
---|---|
Permitir resultados parciales | Establézcalo en falso para devolver un error general si la solicitud produce resultados parciales. Establézcalo en verdadero, lo que permitirá resultados parciales en el caso de un clúster parcial. |
Analizador | Obtiene el analizador utilizado por este índice. |
Confirmar datos | Devuelve el mapa de datos de usuario de confirmación que se confirmó por última vez, o el que se configuró en SetCommitData(IDictionary ). |
Config | Devuelve un LiveIndexWriterConfig, que se puede utilizar para consultar el Escritor de índices configuraciones actuales, así como modificar las "en vivo". |
Directorio | Obtiene el Directorio utilizado por este índice. |
Está cerrado | |
Mantener segmentos completamente eliminados | Solo para pruebas. @lucene.interna |
maxdoc | Obtiene el número total de documentos en este índice, incluidos los documentos que aún no se han vaciado (todavía en el búfer de RAM), sin contar las eliminaciones. |
Fusión de segmentos | Experto: para ser utilizado por un Política de fusión para evitar seleccionar fusiones para segmentos que ya se están fusionando. La colección devuelta no está clonada y, por lo tanto, solo es seguro acceder si mantiene Escritor de índicesbloqueo de (lo que haces cuando Escritor de índices invoca el Política de fusión). ¡No altere la colección devuelta! |
NúmDocs | Obtiene el número total de documentos en este índice, incluidos los documentos que aún no se han vaciado (aún en el búfer de RAM) y las eliminaciones. NOTA: las eliminaciones almacenadas en el búfer no se cuentan. Si realmente necesita que se cuenten, debe llamar al Cometer() de antemano. |
Operaciones Completadas | Las operaciones de escritor de índices son todas asíncronas. Devuelve verdadero si todos están completos. |
Métodos
Nombre | Descripción |
---|---|
AddDocument(IEnumerable ) | Agrega un documento a este índice. Tenga en cuenta que si un Este método vacía periódicamente los documentos pendientes al Directorio (consulta: Escritor de índices), y también desencadena periódicamente fusiones de segmentos en el índice de acuerdo con el Política de fusión en uso. Las fusiones consumen espacio temporalmente en el directorio. La cantidad de espacio requerida es hasta 1X el tamaño de todos los segmentos que se fusionan, cuando no hay lectores/buscadores abiertos en el índice, y hasta 2X el tamaño de todos los segmentos que se fusionan cuando los lectores/buscadores están abiertos en el índice (ver Forzar fusión (Int32) para detalles). La secuencia de operaciones de fusión primitivas realizadas se rige por la política de fusión. Tenga en cuenta que cada término en el documento no puede tener más de MAX_TERM_LENGTH en bytes, de lo contrario un
Tenga en cuenta que es posible crear una cadena Unicode no válida en Java si un par suplente UTF16 tiene un formato incorrecto. En este caso, los caracteres no válidos se reemplazan silenciosamente con el carácter de reemplazo Unicode U+FFFD. NOTA: si este método llega a un |
AddDocument(IEnumerable , analizador) | Agrega un documento a este índice, usando el proporcionado See AddDocument(IEnumerable ) para obtener detalles sobre el índice y Escritor de índices estado después de un NOTA: si este método llega a un |
AddDocuments(IDictionary , Analizador>) | |
AddDocuments(IEnumerable >) | Agrega atómicamente un bloque de documentos con ID de documentos asignados secuencialmente, de modo que un lector externo verá todos o ninguno de los documentos. ADVERTENCIA: el índice actualmente no registra qué documentos se agregaron como un bloque. Hoy esto está bien, porque la fusión preservará un bloque. El orden de los documentos dentro de un segmento se conservará, incluso cuando se eliminen los documentos secundarios dentro de un bloque. La mayoría de las funciones de búsqueda (como la agrupación de resultados y la unión de bloques) requieren que marque los documentos; cuando se eliminen estos documentos, estas funciones de búsqueda no funcionarán como se esperaba. Obviamente, agregar documentos a un bloque existente requerirá que vuelva a indexar todo el bloque. Sin embargo, es posible que en el futuro Lucene pueda fusionar documentos reordenados de manera más agresiva (por ejemplo, tal vez para obtener una mejor compresión del índice), en cuyo caso es posible que deba volver a indexar completamente sus documentos en ese momento. See AddDocument(IEnumerable ) para obtener detalles sobre el índice y Escritor de índices estado después de un NOTA: las herramientas que dividen un índice sin conexión (por ejemplo, IndexSplitter en Lucene.Net.Misc) o reclasifican documentos (por ejemplo, IndexSorter en contrib) no son conscientes de estos documentos agregados atómicamente y probablemente los dividirán. ¡Use tales herramientas bajo su propio riesgo! NOTA: si este método llega a un @lucene.experimental |
AddDocuments(IEnumerable >, Analizador) | Agrega atómicamente un bloque de documentos, analizado usando el proporcionado @lucene.experimental |
Agregar índices (IndexReader []) | Fusiona los índices proporcionados en este índice. El proporcionado Lector de índicess no están cerrados.
See Agregar índices (IndexReader []) para obtener detalles sobre la semántica transaccional, se requiere espacio libre temporal en el Directorio, y segmentos no CFS en un
NOTA: si este método llega a un NOTA: los segmentos vacíos se descartan con este método y no se agregan a este índice.
NOTA: este método fusiona todo lo dado Lector de índicess en una fusión. Si tiene la intención de fusionar una gran cantidad de lectores, puede ser mejor llamar a este método varias veces, cada vez con un pequeño conjunto de lectores. En principio, si utiliza una política de combinación con un
NOTA: si llamas Desechar (booleano) |
AddIndexes(Directorio[]) | Agrega todos los segmentos de una matriz de índices a este índice. Esto se puede usar para paralelizar la indexación por lotes. Una gran colección de documentos se puede dividir en subcolecciones. Cada subcolección se puede indexar en paralelo, en un subproceso, proceso o máquina diferente. A continuación, se puede crear el índice completo fusionando índices de subcolección con este método. NOTA: este método adquiere el bloqueo de escritura en cada directorio, para garantizar que no Escritor de índices está abierto actualmente o intenta abrirse mientras se está ejecutando. Este método es transaccional en cómo Tenga en cuenta que esto requiere espacio libre temporal en el Directorio hasta 2X la suma de todos los índices de entrada (incluido el índice inicial). Si los lectores/buscadores están abiertos contra el índice de inicio, entonces el espacio libre temporal requerido será mayor por el tamaño del índice de inicio (ver Forzar fusión (Int32) para más detalles). NOTA: este método solo copia los segmentos de los índices entrantes y no los fusiona. Por lo tanto, los documentos eliminados no se eliminan y los nuevos segmentos no se fusionan con los existentes. Esto requiere que este índice no esté entre los que se agregarán.
NOTA: si este método llega a un |
Cometer() | Confirma todos los cambios pendientes (documentos agregados y eliminados, fusiones de segmentos, índices agregados, etc.) en el índice y sincroniza todos los archivos de índice a los que se hace referencia, de modo que un lector verá los cambios y las actualizaciones del índice sobrevivirán a un bloqueo del sistema operativo o de la máquina o pérdida de potencia. Tenga en cuenta que esto no espera a que finalice ninguna combinación de fondo en ejecución. Esta puede ser una operación costosa, por lo que debe probar el costo en su aplicación y hacerlo solo cuando sea realmente necesario. Tenga en cuenta que esta operación llama Sincronizar (IColección ) en los archivos de índice. Esa llamada no debería regresar hasta que el contenido del archivo y los metadatos estén en un almacenamiento estable. Para FSDirectorio, esto llama al fsync del sistema operativo. Pero, tenga cuidado: algunos dispositivos de hardware pueden, de hecho, escribir en caché incluso durante fsync y regresar antes de que los bits estén realmente en un almacenamiento estable, para dar la apariencia de un rendimiento más rápido. Si tiene un dispositivo de este tipo y no tiene una batería de respaldo (por ejemplo), en caso de pérdida de energía, aún puede perder datos. Lucene no puede garantizar la consistencia en dichos dispositivos. NOTA: si este método llega a un |
Eliminar todos() | Eliminar todos los documentos del índice. Este método eliminará todos los documentos almacenados en el búfer y eliminará todos los segmentos del índice. Este cambio no será visible hasta que un Cometer() ha sido llamado. Este método se puede revertir usando Retroceder(). NOTA: este método es mucho más rápido que usar NOTA: este método anulará por la fuerza todas las fusiones en curso. Si se están ejecutando otros subprocesos Forzar fusión (Int32), Agregar índices (IndexReader []) or ForceFusionDeletes() métodos, pueden recibir MergePolicy.MergeAbortedExceptions. |
Eliminar documentos (plazo) | Elimina los documentos que contienen NOTA: si este método llega a un |
Eliminar documentos (término []) | Elimina los documentos que contienen cualquiera de los términos. Todas las eliminaciones dadas se aplican y se vacían atómicamente al mismo tiempo. NOTA: si este método llega a un |
Eliminar Documentos (Consulta) | Elimina los documentos que coinciden con la consulta proporcionada. NOTA: si este método llega a un |
Eliminar documentos (consulta []) | Elimina los documentos que coincidan con cualquiera de las consultas proporcionadas. Todas las eliminaciones dadas se aplican y se vacían atómicamente al mismo tiempo. NOTA: si este método llega a un |
Eliminar archivos no utilizados () | Experto: elimine los archivos de índice que ya no se utilizan. Escritor de índices normalmente elimina los archivos no utilizados, durante la indexación. Sin embargo, en Windows, que no permite la eliminación de archivos abiertos, si hay un lector abierto en el índice, esos archivos no se pueden eliminar. Esto está bien, porque Escritor de índices periódicamente volverá a intentar la eliminación. Sin embargo, Escritor de índices no lo intenta a menudo: solo al abrir, cerrar, vaciar un nuevo segmento y finalizar una fusión. Si no realiza ninguna de estas acciones con su Escritor de índices, verá que los archivos no utilizados permanecen. Si eso es un problema, llame a este método para eliminarlos (una vez que haya cerrado los lectores abiertos que impedían su eliminación). Además, puede llamar a este método para eliminar confirmaciones de índice sin referencia. esto podría ser útil si está utilizando un IndexDeletionPolicyIndexDeletionPolicy que mantiene las confirmaciones de índice hasta que se cumplen algunos criterios, pero esas confirmaciones ya no son necesarias. De lo contrario, esas confirmaciones se eliminarán la próxima vez. Cometer() se llama. |
Disponer() | Confirma todos los cambios en un índice, espera a que se completen las fusiones pendientes y cierra todos los archivos asociados. Este es un "cierre lento y elegante" que puede llevar mucho tiempo, especialmente si hay una gran fusión pendiente: si solo desea cerrar el uso de recursos Retroceder(). Si solo desea confirmar los cambios pendientes y cerrar los recursos, consulte Desechar (booleano). Tenga en cuenta que esta puede ser una operación costosa, así que intente reutilizar un solo escritor en lugar de cerrar y abrir uno nuevo. Ver Cometer() para advertencias sobre el almacenamiento en caché de escritura realizado por algunos dispositivos IO. Si un Si puede corregir la causa subyacente (por ejemplo, liberar algo de espacio en disco), entonces puede llamar Disponer() otra vez. De lo contrario, si desea forzar la liberación del bloqueo de escritura (peligroso, porque puede perder los documentos almacenados en el búfer en el Escritor de índices instancia) entonces puedes hacer algo como esto:
después de lo cual, debe asegurarse de no usar más la instancia de escritor. NOTA: si este método llega a un |
Desechar (booleano) | Cierra el índice con o sin esperar a que finalicen las fusiones actualmente en ejecución. Esto sólo tiene sentido cuando se utiliza un Programador de fusión que ejecuta fusiones en subprocesos de fondo. NOTA: si este método llega a un NOTA: es peligroso llamar siempre
|
DoAfterFlush() | Un gancho para extender clases para ejecutar operaciones después de que los documentos agregados y eliminados pendientes se hayan vaciado al Directorio pero antes de que se confirme el cambio (nuevo archivo segments_N escrito). |
hacer antes de vaciar () | Un gancho para extender clases para ejecutar operaciones antes de que los documentos agregados y eliminados pendientes se vacíen al Directorio. |
AsegurarAbrir() | Usado internamente para lanzar un
|
Asegúrese de abrir (booleano) | Usado internamente para lanzar un |
Flush (booleano, booleano) | Vacíe todas las actualizaciones almacenadas en el búfer (adiciones y eliminaciones) en el Directorio. |
Forzar fusión (Int32) | Obliga a la política de fusión a fusionar segmentos hasta que haya <=
Esta es una operación terriblemente costosa, especialmente cuando pasas por un pequeño Tenga en cuenta que esto requiere hasta 2X el espacio libre del tamaño del índice en su Directorio (3X si está utilizando un formato de archivo compuesto). Por ejemplo, si el tamaño de su índice es de 10 MB, necesitará hasta 20 MB libres para que esto se complete (30 MB si está utilizando un formato de archivo compuesto). Además, lo mejor es llamar Cometer() después, para permitir Escritor de índices para liberar espacio en el disco. Si algunos, pero no todos los lectores, se vuelven a abrir mientras se realiza la fusión, esto hará que se consuma > 2 veces el espacio temporal, ya que esos nuevos lectores mantendrán abiertos los segmentos temporales en ese momento. Es mejor no volver a abrir los lectores mientras se ejecuta la fusión. El uso temporal real podría ser mucho menor que estas cifras (depende de muchos factores). En general, una vez que esto se complete, el tamaño total del índice será menor que el tamaño del índice inicial. Podría ser un poco más pequeño (si hubiera muchas eliminaciones pendientes) o solo un poco más pequeño. Si un Esta llamada fusionará los segmentos presentes en el índice cuando comenzó la llamada. Si otros subprocesos aún están agregando documentos y vaciando segmentos, esos segmentos recién creados no se fusionarán a menos que llame Forzar fusión (Int32) de nuevo. NOTA: si este método llega a un NOTA: si llamas Desechar (booleano)
|
Forzar fusión (Int32, booleano) | Al igual que Forzar fusión (Int32), excepto que puede especificar si la llamada debe bloquearse hasta que se complete toda la fusión. Esto sólo tiene sentido con un Lucene.Net.Index.IndexWriter.mergeScheduler que es capaz de ejecutar fusiones en subprocesos de fondo. NOTA: si este método llega a un |
ForceFusionDeletes() | Fuerza la fusión de todos los segmentos que tienen documentos eliminados. Las fusiones reales que se ejecutarán están determinadas por el Política de fusión. Por ejemplo, el valor predeterminado Política de fusión por niveles solo elegirá un segmento si el porcentaje de documentos eliminados supera el 10 %. Esta es a menudo una operación terriblemente costosa; rara vez está justificado. Para ver cuántas eliminaciones tienes pendientes en tu índice, llama NúmDocsDeleted. NOTA: este método primero vacía un nuevo segmento (si hay documentos indexados) y aplica todas las eliminaciones almacenadas en el búfer. NOTA: si este método llega a un |
ForceMergeDeletes(Booleano) | Al igual que ForceFusionDeletes(), excepto que puede especificar si la llamada debe bloquearse hasta que se complete la operación. Esto sólo tiene sentido con un Programador de fusión que es capaz de ejecutar fusiones en subprocesos de fondo. NOTA: si este método llega a un NOTA: si llamas Desechar (booleano)
|
GetReader(Booleano) | Experto: devuelve un lector de solo lectura, que cubre todos los cambios confirmados y no confirmados en el índice. esto proporciona una búsqueda "casi en tiempo real", en la que los cambios realizados durante una Escritor de índices la sesión puede estar disponible rápidamente para realizar búsquedas sin cerrar el editor ni llamar Cometer(). Tenga en cuenta que esto es funcionalmente equivalente a llamar a Flush() y luego abrir un nuevo lector. Pero el tiempo de respuesta de este método debería ser más rápido, ya que evita el potencialmente costoso Cometer(). Debes cerrar el Lector de índices devuelto por este método una vez que haya terminado de usarlo. Es cerca en tiempo real porque no existe una gran garantía sobre la rapidez con la que puede obtener un nuevo lector después de realizar cambios con Escritor de índices. Tendrás que experimentar en tu situación para determinar si es lo suficientemente rápido. Como se trata de una característica nueva y experimental, informe sobre sus hallazgos para que podamos aprender, mejorar e iterar. El lector resultante admite DoOpenIfChanged(), pero esa llamada simplemente se reenviará a este método (aunque esto puede cambiar en el futuro). La primera vez que se llama a este método, esta instancia de escritor hará todo lo posible por agrupar los lectores que abre para realizar fusiones, aplicar eliminaciones, etc. Esto significa que se consumirán recursos adicionales (RAM, descriptores de archivo, tiempo de CPU). Para una latencia más baja al reabrir un lector, debe configurar Calentador de segmento fusionado para precalentar un segmento recién fusionado antes de que se confirme en el índice. Esto es importante para minimizar el retraso del índice a la búsqueda después de una combinación grande. Si se está ejecutando una llamada AddIndexes* en otro subproceso, este lector solo buscará los segmentos del índice externo que se han copiado con éxito hasta el momento. NOTA: Una vez que se elimina el escritor, se pueden seguir utilizando los lectores pendientes. Sin embargo, si intenta reabrir cualquiera de esos lectores, encontrará un @lucene.experimental |
Tiene eliminaciones () | Returns |
Tiene fusiones pendientes () | Experto: devuelve verdadero si hay fusiones en espera de ser programadas. @lucene.experimental |
Tiene cambios no confirmados () | Returns |
EstáBloqueado(Directorio) | Returns |
QuizáFusionar() | Experto: pregunta el Lucene.Net.Index.IndexWriter.mergePolicy si se necesitan fusiones ahora y, de ser así, ejecuta las fusiones solicitadas y luego itera (prueba nuevamente si se necesitan fusiones) hasta que no se devuelvan más fusiones. Lucene.Net.Index.IndexWriter.mergePolicy. Llamadas explícitas a QuizáFusionar() normalmente no son necesarios. El caso más común es cuando los parámetros de la política de combinación han cambiado. este método llamará al Lucene.Net.Index.IndexWriter.mergePolicy EXPLICIT. NOTA: si este método llega a un |
Combinar (MergePolicy.OneMerge) | Fusiona los segmentos indicados, reemplazándolos en la pila con un solo segmento. @lucene.experimental |
FusionarFinalizar(MergePolicy.OneMerge) | Realiza el acabado de una fusión, que es rápido pero mantiene el bloqueo sincronizado activado Escritor de índices ejemplo. |
SiguienteFusionar() | experto: el Lucene.Net.Index.IndexWriter.mergeScheduler llama a este método para recuperar la siguiente fusión solicitada por el Política de fusión @lucene.experimental |
Núm.DocsDeleted(SegmentCommitInfo) | Obtenga el número de documentos eliminados para un lector agrupado. Si el lector no se agrupa, se devuelve delCount de segmentInfo. |
NúmRamDocs() | Experto: Devuelve el número de documentos almacenados actualmente en la memoria RAM. |
PrepararCommit() | Experto: prepárate para cometer. Esto hace la primera fase del compromiso de 2 fases. este método realiza todos los pasos necesarios para confirmar los cambios desde que se abrió este editor: vacía los documentos agregados y eliminados pendientes, sincroniza los archivos de índice, escribe la mayor parte del siguiente archivo segments_N. Después de llamar a esto, debe llamar a cualquiera Cometer() para terminar la confirmación, o Retroceder() para revertir la confirmación y deshacer todos los cambios realizados desde que se abrió el escritor. También puedes simplemente llamar Cometer() directamente sin PrepararCommit() primero en cuyo caso ese método llamará internamente PrepararCommit(). NOTA: si este método llega a un |
RamSizeInBytes() | Experto: devuelve el tamaño total de todos los archivos de índice almacenados actualmente en la memoria caché. Útil para la gestión de tamaño con flushRamDocs() |
Retroceder() | Cierra el Escritor de índices sin confirmar ningún cambio que haya ocurrido desde la última confirmación (o desde que se abrió, si no se ha llamado a la confirmación). esto elimina cualquier archivo temporal que se haya creado, después de lo cual el estado del índice será el mismo que cuando Cometer() fue llamado por última vez o cuando este escritor se abrió por primera vez. Esto también borra una llamada anterior a PrepararCommit(). |
Cadena de segmentos() | Devuelve una descripción de cadena de todos los segmentos, para la depuración. @lucene.interna |
SegString(IEnumerable ) | Devuelve una descripción de cadena de los segmentos especificados, para la depuración. @lucene.interna |
SegString(SegmentoCommitInfo) | Devuelve una descripción de cadena del segmento especificado, para la depuración. @lucene.interna |
SetCommitData(IDictionary ) | Establece el mapa de datos de usuario de confirmación. Ese método se considera una transacción por Escritor de índices y será cometido (Cometer() incluso si no se realizaron otros cambios en la instancia de escritor. Tenga en cuenta que debe llamar a este método antes PrepararCommit(), o de lo contrario no se incluirá en el seguimiento Cometer(). NOTA: el diccionario se clona internamente, por lo tanto, alterar el contenido del diccionario después de llamar a este método no tiene ningún efecto. |
PruebeDeleteDocument(IndexReader, Int32) | Experto: intenta eliminar por ID de documento, siempre que se proporcione NOTA: este método solo puede eliminar documentos visibles para el lector NRT actualmente abierto. Si necesita eliminar documentos indexados después de abrir el lector NRT, debe usar los otros métodos DeleteDocument() (p. ej., Eliminar documentos (plazo)). |
Desbloquear (Directorio) | Desbloquea a la fuerza el índice en el directorio nombrado. Precaución: esto solo debe ser utilizado por el código de recuperación de fallas, cuando se sabe que ningún otro proceso o subproceso está accediendo actualmente a este índice. |
UpdateBinaryDocValue(Término, Cadena, BytesRef) | Actualiza un documento ValoresDocBinarios para NOTA: este método actualmente reemplaza el valor existente de todos los documentos afectados con el nuevo valor.
NOTA: si este método llega a un |
ActualizarDocumento(Término, IEnumerable ) | Actualiza un documento eliminando primero los documentos que contienen NOTA: si este método llega a un |
ActualizarDocumento(Término, IEnumerable , analizador) | Actualiza un documento eliminando primero los documentos que contienen NOTA: si este método llega a un |
UpdateDocuments(Término, IEnumerable >) | Elimina atómicamente los documentos que coinciden con los proporcionados
@lucene.experimental |
UpdateDocuments(Término, IEnumerable >, Analizador) | Elimina atómicamente los documentos que coinciden con los proporcionados
@lucene.experimental |
UpdateNumericDocValue(Término, Cadena, Anulable ) | Actualiza un documento Numericales para
NOTA: si este método llega a un |
Esperar fusiones () | Espere a que finalicen las fusiones actualmente pendientes. Se garantiza que cualquier fusión iniciada antes de llamar a este método se habrá completado una vez que este método se complete. |