Red de conocimiento informático - Material del sitio web - Cómo configurar pesos en SolrEsta es la "Teoría básica de recuperación de texto completo" que he leído. Espero que te resulte útil. Puedes verla de forma selectiva. Generalmente se dividen en dos tipos: datos estructurados y datos no estructurados. Datos estructurados: se refiere a datos con formato fijo o longitud limitada, como bases de datos, metadatos, etc. Datos no estructurados: se refiere a datos sin longitud ni formato fijo, como correos electrónicos, documentos de Word, etc. Por supuesto, el tercer tipo se menciona en algunos lugares, datos semiestructurados, como XML, HTML, etc., cuando se procesan de acuerdo con las necesidades de los datos estructurados, también se pueden procesar en función de datos no estructurados extraídos de texto sin formato. Los datos no estructurados también se conocen como datos de texto completo. Según la clasificación de los datos, la búsqueda también se divide en dos tipos: Búsqueda de datos estructurados: como la búsqueda en bases de datos, mediante sentencias SQL. Luego está la búsqueda de metadatos, como el uso de la búsqueda de Windows para buscar el nombre, el tipo y la hora de modificación del archivo. Busque datos no estructurados: por ejemplo, utilice declaraciones SQL para buscar en una base de datos. Buscar datos no estructurados: también puede buscar contenidos de archivos mediante la búsqueda de Windows, y los comandos grep de Linux, como Google y Baidu, pueden buscar grandes cantidades de datos de contenido. Hay dos métodos principales para buscar datos no estructurados, es decir, datos de texto completo: uno es el escaneo en serie: el llamado escaneo secuencial, como la búsqueda de documentos que contienen un contenido de cadena, consiste en mirar cada documento uno por uno. Para cada documento, lea de principio a fin, si el documento contiene esta cadena, entonces este documento es el documento que estamos buscando y luego mire el siguiente documento hasta que se escaneen todos los documentos. Si utiliza la búsqueda de Windows, también puede buscar el contenido del archivo, pero la velocidad es bastante lenta. Si tiene un disco duro de 80G y desea encontrar un archivo que contenga una cadena de contenido, es posible que no sea posible sin dedicar varias horas. El comando grep también es un método en Linux. Puede pensar que este método es primitivo, pero para una pequeña cantidad de archivos de datos, este método sigue siendo el más directo y conveniente. Pero para una gran cantidad de archivos, este método es muy lento. Algunas personas pueden decir que el escaneo secuencial de datos no estructurados es muy lento y la búsqueda de datos estructurados es relativamente rápida (debido a que los datos estructurados tienen una cierta estructura, se pueden adoptar ciertos algoritmos de búsqueda para acelerar la velocidad), entonces nuestros datos no estructurados ¿No sería suficiente encontrar una manera de crear una determinada estructura? Esta idea es natural, pero constituye la idea básica de la recuperación de texto completo, que consiste en extraer parte de la información de datos no estructurados, reorganizarla en datos con una determinada estructura y luego recuperar los datos estructurados, de modo que en cuanto a Para lograr el propósito de una velocidad de recuperación relativamente rápida. Esta parte de la información extraída de datos no estructurados se reorganiza y se denomina índice. Esta afirmación es relativamente abstracta y se puede entender fácilmente dando algunos ejemplos. Por ejemplo, en un diccionario, la tabla de sílabas y la tabla de búsqueda de letras iniciales del diccionario son equivalentes al índice del diccionario. La definición de cada palabra no está estructurada. Si no existe tal palabra en el diccionario, la tabla de sílabas y la tabla de búsqueda de letras iniciales solo se pueden escanear para encontrar una palabra en el vasto mar de palabras. Sin embargo, parte de la información de la palabra se puede extraer y procesar de manera estructurada, como la pronunciación. La pronunciación está muy estructurada y se divide en consonantes iniciales y finales. Solo se pueden enumerar una por una, por lo que la pronunciación será. Sácalos y colócalos en un orden determinado, con cada pronunciación apuntando a la página donde se explica la palabra en detalle. Cuando buscamos, primero encontramos la pronunciación a través del pinyin estructurado, y luego a través de la página a la que apunta, encontramos nuestros datos no estructurados, que son la explicación de la palabra. Este proceso de indexar y luego buscar en el índice se denomina búsqueda de texto completo. La siguiente figura es un diagrama esquemático del funcionamiento de Lucene, pero describe no solo el proceso de búsqueda de Lucene, sino también el proceso general de búsqueda de texto completo. La búsqueda de texto completo se divide aproximadamente en dos procesos: crear un índice (indexación) y buscar en el índice (búsqueda). ?Creación de índices: el proceso de extraer información de todos los datos estructurados y no estructurados del mundo real y crear un índice. ?Índice de búsqueda: Es el proceso de obtener la solicitud de consulta del usuario, buscar el índice creado y luego devolver los resultados. Por tanto, hay tres preguntas importantes en la recuperación de texto completo: 1. ¿Qué se almacena en el índice? (Índice) 2. ¿Cómo crear un índice? (Índice) 3. ¿Cómo buscar en el índice? (Buscar) A continuación examinaremos estas preguntas una por una.

Cómo configurar pesos en SolrEsta es la "Teoría básica de recuperación de texto completo" que he leído. Espero que te resulte útil. Puedes verla de forma selectiva. Generalmente se dividen en dos tipos: datos estructurados y datos no estructurados. Datos estructurados: se refiere a datos con formato fijo o longitud limitada, como bases de datos, metadatos, etc. Datos no estructurados: se refiere a datos sin longitud ni formato fijo, como correos electrónicos, documentos de Word, etc. Por supuesto, el tercer tipo se menciona en algunos lugares, datos semiestructurados, como XML, HTML, etc., cuando se procesan de acuerdo con las necesidades de los datos estructurados, también se pueden procesar en función de datos no estructurados extraídos de texto sin formato. Los datos no estructurados también se conocen como datos de texto completo. Según la clasificación de los datos, la búsqueda también se divide en dos tipos: Búsqueda de datos estructurados: como la búsqueda en bases de datos, mediante sentencias SQL. Luego está la búsqueda de metadatos, como el uso de la búsqueda de Windows para buscar el nombre, el tipo y la hora de modificación del archivo. Busque datos no estructurados: por ejemplo, utilice declaraciones SQL para buscar en una base de datos. Buscar datos no estructurados: también puede buscar contenidos de archivos mediante la búsqueda de Windows, y los comandos grep de Linux, como Google y Baidu, pueden buscar grandes cantidades de datos de contenido. Hay dos métodos principales para buscar datos no estructurados, es decir, datos de texto completo: uno es el escaneo en serie: el llamado escaneo secuencial, como la búsqueda de documentos que contienen un contenido de cadena, consiste en mirar cada documento uno por uno. Para cada documento, lea de principio a fin, si el documento contiene esta cadena, entonces este documento es el documento que estamos buscando y luego mire el siguiente documento hasta que se escaneen todos los documentos. Si utiliza la búsqueda de Windows, también puede buscar el contenido del archivo, pero la velocidad es bastante lenta. Si tiene un disco duro de 80G y desea encontrar un archivo que contenga una cadena de contenido, es posible que no sea posible sin dedicar varias horas. El comando grep también es un método en Linux. Puede pensar que este método es primitivo, pero para una pequeña cantidad de archivos de datos, este método sigue siendo el más directo y conveniente. Pero para una gran cantidad de archivos, este método es muy lento. Algunas personas pueden decir que el escaneo secuencial de datos no estructurados es muy lento y la búsqueda de datos estructurados es relativamente rápida (debido a que los datos estructurados tienen una cierta estructura, se pueden adoptar ciertos algoritmos de búsqueda para acelerar la velocidad), entonces nuestros datos no estructurados ¿No sería suficiente encontrar una manera de crear una determinada estructura? Esta idea es natural, pero constituye la idea básica de la recuperación de texto completo, que consiste en extraer parte de la información de datos no estructurados, reorganizarla en datos con una determinada estructura y luego recuperar los datos estructurados, de modo que en cuanto a Para lograr el propósito de una velocidad de recuperación relativamente rápida. Esta parte de la información extraída de datos no estructurados se reorganiza y se denomina índice. Esta afirmación es relativamente abstracta y se puede entender fácilmente dando algunos ejemplos. Por ejemplo, en un diccionario, la tabla de sílabas y la tabla de búsqueda de letras iniciales del diccionario son equivalentes al índice del diccionario. La definición de cada palabra no está estructurada. Si no existe tal palabra en el diccionario, la tabla de sílabas y la tabla de búsqueda de letras iniciales solo se pueden escanear para encontrar una palabra en el vasto mar de palabras. Sin embargo, parte de la información de la palabra se puede extraer y procesar de manera estructurada, como la pronunciación. La pronunciación está muy estructurada y se divide en consonantes iniciales y finales. Solo se pueden enumerar una por una, por lo que la pronunciación será. Sácalos y colócalos en un orden determinado, con cada pronunciación apuntando a la página donde se explica la palabra en detalle. Cuando buscamos, primero encontramos la pronunciación a través del pinyin estructurado, y luego a través de la página a la que apunta, encontramos nuestros datos no estructurados, que son la explicación de la palabra. Este proceso de indexar y luego buscar en el índice se denomina búsqueda de texto completo. La siguiente figura es un diagrama esquemático del funcionamiento de Lucene, pero describe no solo el proceso de búsqueda de Lucene, sino también el proceso general de búsqueda de texto completo. La búsqueda de texto completo se divide aproximadamente en dos procesos: crear un índice (indexación) y buscar en el índice (búsqueda). ?Creación de índices: el proceso de extraer información de todos los datos estructurados y no estructurados del mundo real y crear un índice. ?Índice de búsqueda: Es el proceso de obtener la solicitud de consulta del usuario, buscar el índice creado y luego devolver los resultados. Por tanto, hay tres preguntas importantes en la recuperación de texto completo: 1. ¿Qué se almacena en el índice? (Índice) 2. ¿Cómo crear un índice? (Índice) 3. ¿Cómo buscar en el índice? (Buscar) A continuación examinaremos estas preguntas una por una.

2. ¿Qué se almacena exactamente en el índice? ¿Qué se debe almacenar exactamente en el índice? Primero, veamos por qué el escaneo secuencial es lento: de hecho, se debe a la inconsistencia entre la información que queremos buscar y la información almacenada en los datos no estructurados. La información almacenada en datos no estructurados es la cadena contenida en cada archivo, es decir, el archivo conocido, y es relativamente fácil buscar la cadena, es decir, la asignación de archivos a cadenas. La información que queremos buscar es qué archivos contienen esta cadena, es decir, la cadena conocida y el archivo deseado, que es el mapeo de cadena a archivo. Los dos son exactamente lo contrario. Por lo tanto, si el índice siempre puede guardar la asignación de cadenas a archivos, puede mejorar enormemente la velocidad de búsqueda. Dado que el mapeo de una cadena a un archivo es el proceso inverso al mapeo de un archivo a una cadena, un índice que contiene esta información se denomina índice inverso. La información guardada por el índice inverso es generalmente la siguiente: Supongamos que tengo una colección de archivos con 100 archivos para facilitar la representación, numeramos los archivos del 1 al 100 para obtener la siguiente estructura. de cadenas, llamado diccionario. Cada cadena apunta a una lista vinculada de documentos que contiene la cadena. La lista vinculada de documentos se denomina lista invertida (Lista de publicaciones). Con un índice, la información guardada puede ser coherente con la información que se va a buscar, lo que puede acelerar enormemente la búsqueda. Por ejemplo, si queremos buscar documentos con la cadena "lucene" y la cadena "solr" al mismo tiempo, solo necesitamos los siguientes pasos: 1. Obtener la lista de documentos que contienen la cadena "lucene". 2. Obtenga la lista de documentos que contienen la cadena "solr". 3.3. Encuentre documentos que contengan "lucene" y "solr" fusionando la lista de enlaces. Al ver esto, algunas personas pueden decir que la búsqueda de texto completo acelera la búsqueda, pero el proceso de indexación es mayor y los dos juntos no son necesariamente mucho más rápidos que el escaneo secuencial. De hecho, con el proceso de indexación, la recuperación del texto completo no es necesariamente más rápida que el escaneo secuencial, especialmente cuando los datos son pequeños. Y crear índices sobre grandes cantidades de datos también es un proceso muy lento. Sin embargo, todavía existe una diferencia entre los dos: el escaneo secuencial requiere escanear cada vez, mientras que el proceso de creación de un índice solo debe realizarse una vez y luego se realiza de una vez por todas. Debe pasar por el proceso de creación de un índice. Solo necesita crearlo al realizar la búsqueda. Ésta es también una de las ventajas de la recuperación de texto completo sobre el escaneo secuencial: un índice, utilizado varias veces. 3. Cómo crear un índice El proceso de creación de un índice para la recuperación de texto completo generalmente tiene los siguientes pasos: Paso 1: Indexar algunos documentos originales (Documento). Para facilitar la indexación, aquí hay dos documentos como ejemplos: Documento I: A los estudiantes se les debe permitir salir con amigos, pero no beber cerveza. Documento 2: Mi amigo Jerry fue a la escuela a ver a sus alumnos y los encontró borrachos. Documento 2: Mi amigo Jerry fue a la escuela a ver a sus alumnos y los encontró borrachos. Esto no está permitido. Paso 2: Pasa el documento original al generador de etiquetas. Tokenizer hace varias cosas (este proceso se llama Tokenización): 1. Divide el documento en palabras individuales. 2. Elimine los signos de puntuación. 2. Elimine los signos de puntuación. 3. Elimine las palabras vacías. Las llamadas palabras vacías son algunas de las palabras más comunes en un idioma, ya que no tienen un significado especial, la mayor parte del tiempo no pueden convertirse en palabras clave de búsqueda, por lo que al crear un índice, dichas palabras se eliminarán para reducirlo. tamaño. Palabras vacías en inglés, como "the", "a", "this", etc. El Tokenizer de cada idioma tiene un conjunto de palabras vacías. El resultado obtenido después del procesamiento de Tokenizer se denomina token. En nuestro ejemplo, obtenemos los siguientes tokens: "estudiante", "permitir", "ir", "su", "su", "su", "su", "su", "su", "su", 'su', 'su' y 'su'. "su", "amigo", "permitido", "bebida", "cerveza", "mío", "amigo", "jerry", "ganar", "escuela", "visto", "él" de, "estudiante", "encontrar", "ellos", "borracho", "permitido". Paso 3: pasar el Token obtenido al procesador de lenguaje. El procesador de lenguaje realiza principalmente algún procesamiento relacionado con el lenguaje en el Token obtenido. Para el inglés, el procesador de idioma generalmente realiza el siguiente procesamiento: 1. Minúsculas.