AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Administrar bases de datos
  • Presentación
  • ¿Cómo realizar una búsqueda de "texto completo"?
  • ¿Cómo crear un índice de texto completo?
  • Observaciones
  • Definición de la palabras vacías
  • Definición de los sinónimos
  • ¿Cómo crear una consulta para realizar una búsqueda de texto completo?
  • Búsqueda de texto completo: Editor de consultas
  • Búsqueda de texto completo: Consulta en código SQL
  • Sintaxis del valor de búsqueda
  • Caso específico de palabras separadas por un guión
  • Analizar el resultado de una consulta de texto completo
  • Gestión de los índices de texto completo mediante programación
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
HFSQL propone una búsqueda rápida de cadenas de caracteres en los datos. Esta búsqueda (llamada "texto completo") permite buscar una palabra o un conjunto de palabras.
Esto permite indexar, sin programar, los textos que se encuentran en una base de datos HFSQL. Estos textos se encuentran en las posiciones "Texto" o "Nota de texto".
Un índice puede indexar uno o más elementos diferentes. La creación del índice puede tener en cuenta los textos formateados (RTF, HTML): las etiquetas en estos formatos serán ignoradas al indexar. Esto le permite encontrar palabras almacenadas en documentos RTF o HTML.
Los resultados de la indexación de texto completo se proponen según un orden de relevancia ("ranking").
Atención: la búsqueda de "texto completo" no es una búsqueda simple de tipo "contiene: la puntuación no se tiene en cuenta.
¿Cómo realizar una búsqueda de "texto completo"?
Para realizar una búsqueda de "texto completo", debe:
  1. Cree un índice de texto completo en los archivos de datos afectados por esta búsqueda.
  2. Cree una consulta para realizar la búsqueda de texto completo.
  3. Estudiar y mostrar el resultado de la consulta.
¿Cómo crear un índice de texto completo?
La creación de un índice de texto completo se realiza en editor de análisis.
Para crear un índice de texto completo:
  1. En el editor de análisis, muestra el description de los artículos que se encuentran en el archivo correspondiente ("Descripción de los artículos" de el menú contextual).
  2. Haga clic en Índice de texto completo. Se visualiza la ventana para definir el índice de texto completo.. Seleccione los elementos que participan en la composición del índice de texto completo. Sólo se proponen los elementos de "Texto" y "Memorándum de texto" que se encuentran en el archivo description. Valide.
  3. El elemento "Índice de texto completo" se muestra en la lista de elementos.
  4. Seleccione la posición y modifique sus características si es necesario:
    • en la lista de elementos, tiene la posibilidad de modificar el nombre del índice de texto completo.
    • en la sección derecha de la ventana, seleccione los parámetros del índice de texto completo:
      • tamaño mínimo de palabras indexadas (opción "No indexar palabras cuyo tamaño sea menor o igual a"): sólo se indexarán las palabras más largas que este tamaño. Este tamaño es set a 2 caracteres por Default.
      • support para etiquetas RTF: la opción "Mi texto puede contener RTF (no indexar las etiquetas RTF)" permite especificar si el texto contiene texto en RTF. En este caso, las etiquetas RTF se ignoran al indexar.
      • support para etiquetas HTML: la opción "Mi texto puede contener HTML (no indexar las etiquetas HTML)" permite especificar si el texto contiene texto en formato HTML. En este caso, las etiquetas HTML se ignoran al indexar.
      • Gestión de la puntuación UNICODE: esta opción se utiliza para especificar si el texto contiene caracteres de puntuación específicos de Unicode (comillas curvas, etc.).
      • distinguir mayúsculas y minúsculas: Si la opción "Distinguir mayúsculas y minúsculas" está seleccionada, se tendrán en cuenta las mayúsculas y minúsculas durante la indexación.
      • distinguir caracteres con acentos: Si se marca la opción "Distinguir acentos", los caracteres acentuados se tendrán en cuenta a la hora de indexar. Esta opción es necesaria si se solicita el despalillado.
      • gestión de palabras vacías: La gestión de palabras vacías permite definir el palabras vacías que será ignorado durante la operación de indexación. En la mayoría de los casos, la palabras vacías son los artículos, las palabras de conexión, ... El botón "Editar palabras vacías" permite definir el palabras vacías que debe tenerse en cuenta. Para obtener más información, consulte Definición de la palabras vacías.
      • gestión de sinónimos: La gestión de sinónimos se utiliza para definir las palabras que se considerarán sinónimos.. Para obtener más información, consulte Definición de los sinónimos.
      • Gestión de los recursos naturales: Si la gestión de sinónimos no está habilitada, tiene la posibilidad de habilitar la opción. La derivación se utiliza para realizar búsquedas en un índice de texto completo teniendo en cuenta las variaciones de una palabra dada.. Esta característica es interesante para las bases de datos de conocimiento y permite encontrar las palabras en forma singular o plural. La procedencia depende del idioma utilizado.
        Si esta opción está activada, seleccione el idioma utilizado.
  5. Valide la ventana de descripción de los campos.
  6. Guardar y generar el análisis. Al generar el análisis, se modifica la descripción de los archivos de datos y se crea el índice de texto completo (archivo con extensión ".FTX").

Observaciones

  • Para crear directamente un índice de texto completo a partir de un elemento de texto o de un elemento de nota de texto, seleccione el elemento en la ventana de description de los elementos y haga clic en el enlace "Crear un índice de texto completo en el elemento".
  • WINDEVWEBDEV - Código ServidoriPhone/iPad Los índices de texto completo pueden gestionarse en archivos de datos descritos mediante programación: simplemente utilice un Variable de tipo FullTextIndex Description para describir el índice, y luego HDescribeFullTextIndex para validar el nuevo índice.
  • La composición de un índice de texto completo existente puede modificarse en cualquier momento.: para hacerlo, haga clic en el botón "Editar el índice" que se encuentra en la sección izquierda del artículo description en el editor de análisis.
  • Para crear un artículo Índice a texto completo, hay que realizar necesariamente una generación del análisis y una modificación de los datos automatic.
  • Stemming: Debido a las excepciones gramaticales (verbos irregulares en inglés, verbos del tercer grupo en francés, etc.), algunas conjugaciones pueden no estar agrupadas (por ejemplo, una búsqueda de "fly" no encontrará los registros que contienen "fly") o algunas formas plurales pueden no estar agrupadas con su forma singular (pie/pies por ejemplo)..

Definición de la palabras vacías

Si la opción "Palabras vacías" está seleccionada, basta con hacer clic en "Editar palabras vacías" para definir el palabras vacías.
  1. Haga clic en "Editar palabras vacías".
  2. Se muestra una lista de palabras vacías utilizada por Default.
  3. Es posible:
    • Añade palabras vacías: haga clic en el botón "Añadir. En la ventana que se muestra, introduzca la lista de palabras vacías para añadir. Estas palabras pueden estar separadas por espacios, tabulaciones, retornos de carro o los caracteres ",", ", ";" y ":"..
    • Borrar uno o más palabras vacías: seleccione la palabras vacías que desea eliminar de la lista y haga clic en el botón "Eliminar"..
    • Importar palabras vacías: haga clic en el botón "Importar" y seleccione el archivo de texto que contiene la palabras vacías. Estas palabras pueden estar separadas por espacios, tabulaciones, retornos de carro o los caracteres ",", ";";" y ":".
    • Pegar palabras vacías: para pegar palabras vacías disponible en el portapapeles (y separado por espacios, tabulaciones, retornos de carro o los caracteres ",", ";" y ":"), copy las palabras en el portapapeles (Ctrl + C) y haga clic en "Pegar".
  4. Validar.

Definición de los sinónimos

Si la opción "Sinónimos" está seleccionada, basta con hacer clic en "Editar sinónimos" para definir los sinónimos.
  1. Haga clic en "Editar sinónimos".
  2. En la ventana que se muestra, especifique Line de Line los sinónimos que se tendrán en cuenta. Por ejemplo:
    house chalet villa condominium townhouse
  3. Validar.
¿Cómo crear una consulta para realizar una búsqueda de texto completo?
Las búsquedas de texto completo se realizan mediante consultas: consultas creadas en el editor de consultas o consultas creadas en código SQL. La condición de búsqueda se introduce al crear la consulta.

Búsqueda de texto completo: Editor de consultas

Para crear una consulta realizando una búsqueda de texto completo, todo lo que tiene que hacer es añadir un elemento "Full-text index" a la consulta.. La ventana de description de una búsqueda de texto completo se muestra automáticamente.
Esta ventana permite especificar:
  • El valor de búsqueda. Este valor puede introducirse directamente (se utiliza una asistente para construir la cadena buscada) o puede corresponder a un parámetro. Ver "Sintaxis del valor de búsqueda" para más detalles.
  • Las opciones de clasificación del resultado.
Al validar esta ventana, el elemento "texto completo" se añade automáticamente a los elementos de la consulta.. Esta posición corresponde a la relevancia del resultado de la búsqueda. Se ha definido automáticamente una condición: sólo se mostrarán en el resultado de la consulta los registros cuya relevancia sea superior a 0.

Búsqueda de texto completo: Consulta en código SQL

Para crear una consulta que realice una búsqueda de texto completo en código SQL, utilice la siguiente sintaxis:
MATCH (<Index>) AGAINST <Condition>
donde:
  • <Índice> corresponde a la lista de elementos encontrados en el índice separados por comas (el orden de los elementos no es importante).
  • <La condición> corresponde a la cadena buscada. Ver "Sintaxis del valor de búsqueda" para más detalles.
Ejemplo: En este ejemplo, EDT_Find es un control Campo de entrada y ConnectedUserID es un Variable.
QRY_Find is Data Source
 
 
MyQuery is string = [
SELECT * FROM Contacts
WHERE MATCH(Contacts.LastName, Contacts.FirstName, Contacts.HTMLComment,
Contacts.RoughTextComment, Contacts.Comments,
Contacts.Phone, Contacts.Office,
Contacts.Cell, Contacts.Email, Contacts.MSN, Contacts.Internet_site,
Contacts.Country, Contacts.FaxNum, Contacts.City)
AGAINST ('
]
MyQuery = MyQuery + EDT_Find + [
')  
AND Contacts.UserID =  
]
MyQuery = MyQuery + ConnectedUserID + [
ORDER BY LastName DESC
]
 
HExecuteSQLQuery(QRY_SRCH, hQueryDefault, MyQuery)
FOR EACH QRY_SRCH
TableAddLine(TABLE_Contact_by_category, ...
QRY_SRCH.ContactID, QRY_SRCH.CategoryID, ConnectedUserID, ...
QRY_SRCH.LastName, QRY_SRCH.FirstName)
END
CASE ERROR:
Error(HErrorInfo())
Observación: Consulta con parámetro en un índice de texto completo: cómo ignorar el parámetro
Para ignorar el parámetro, la sentencia "MATCH" de la consulta no debe encontrarse en el resultado de la consulta sino en la sentencia WHERE. De hecho, si la pertinencia debe ser incluida en el resultado, el parámetro debe ser especificado para evaluar el resultado.
Para que una consulta creada con el editor de consultas tenga la sentencia MATCH incluida en la sentencia WHERE, la pertinencia no debe aparecer en el resultado.
Ejemplo con relevancia:
SELECT
MATCH(XX, YY, ZZ) AGAINST({ParamFullText}) AS PertinenceFullText
FROM
TABLE
WHERE
<Parameters>
AND
PertinenceFullText > 0
ORDER BY
PertinenceFullText DESC
Ejemplo sin relevancia:
SELECT *
FROM
TABLE
WHERE
<Parameters>
AND MATCH(XXX, YYY, ZZZ) AGAINST({ParamFullText}) > 0

Sintaxis del valor de búsqueda

El valor de búsqueda puede contener los siguientes elementos:
ElementoSignificado
Una sola palabraSe buscará la palabra especificada. La pertinencia aumentará si el texto contiene esta palabra.
Ejemplo: "WINDEV" busca "WINDEV".
Dos palabras separadas por un espacio en blancoBusca una de las palabras.
Ejemplo: "WINDEV WEBDEV" busca los textos que contienen "WINDEV" o "WEBDEV".
Una palabra precedida por el signo "+La palabra especificada es obligatoria.
Ejemplo: "+WINDEV" busca los textos que necesariamente contienen "WINDEV".
Una palabra precedida por el signo "-La palabra especificada no debe encontrarse en el texto.
Ejemplo: "-Índice" busca los textos que no contienen "Índice".
Una palabra precedida por el signo "~Si el texto contiene la palabra especificada, la relevancia se reducirá.
Una o más palabras entre comillasLas palabras especificadas se buscan en el grupo y en orden.
Atención: si "Ignorar las palabras menos que" difiere de "0", no se buscarán las palabras entre comillas de un tamaño inferior al especificado.
Una palabra seguida del signo "*" ".El tipo de búsqueda realizada es "Comienza con" la palabra especificada.
Atención: La búsqueda de texto completo no devuelve ningún resultado si el parámetro pasado está vacío o es nulo.

Caso específico de palabras separadas por un guión

Si el texto contiene palabras separadas por un guión ('-'), cada sección de la palabra se indexa independientemente en un índice de texto completo..
Ejemplo:
  • El texto contiene "multiplataforma": las dos palabras "multi" y "plataforma" se indexarán de forma independiente.
  • Durante la búsqueda, se encontrarán los documentos que contengan "multi" y/o "plataforma"..
  • Para encontrar "multiplataforma", la palabra debe estar entre comillas dobles: "multiplataforma".
    Atención: la búsqueda devolverá todos los documentos que contengan "multi" y "platform" consecutivamente. El separador entre las dos palabras puede no ser el guión: puede ser cualquier separador (espacio, +, punto, coma, retorno de carro, tabulación, etc.).
Analizar el resultado de una consulta de texto completo
El resultado de una consulta de texto completo da, para cada Record encontrado en el archivo de datos, la relevancia del Record en relación con el valor de búsqueda.
Esta relevancia depende de varios factores:
  • el número de veces que la palabra buscada se encuentra en la Record.
  • el número de palabras de la Record y su número de repeticiones.
  • la relación entre los registros que contienen las palabras buscadas y los registros que no contienen las palabras buscadas. De hecho, cuanto más se encuentre la palabra buscada en todos los registros, menos importante será la relevancia.
  • ...
Entonces, el resultado de una búsqueda de "texto completo" puede ser procesado como cualquier resultado de consulta.: puede, por ejemplo, visualizar el resultado en un tabla, realizar una clasificación según la relevancia, ....
Gestión de los índices de texto completo mediante programación
Se utilizan varias funciones de WLanguage para administrar los índices de texto completo:
HDescribeFullTextIndexDescribe un índice de texto completo de un archivo de datos creado mediante programación.
HListFullTextIndexDevuelve la lista de los índices de texto completo de un archivo de datos (consulta o vista) reconocidos por el motor HFSQL.
HListStopWordDevuelve la lista de palabras vacías utilizadas por un índice de texto completo.
HListSynonymDevuelve la lista de sinónimos utilizados por un índice de texto completo.
Observaciones:
  • WINDEVWEBDEV - Código ServidoriPhone/iPad La creación de un índice de texto completo en un archivo de datos creado a través de la programación se puede hacer a través de un FullTextIndex Description Variable.
  • HIndex se utiliza para reindexar los índices de texto completo.
Versión mínima requerida
  • Versión 14
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/01/2023

Señalar un error o enviar una sugerencia | Ayuda local