El soporte de secciones le permite indexar y buscar en secciones específicas de un documento estructurado, por ejemplo, en el título, en el autor o en la descripción. Los documentos pueden estar en formato XML o HTML o en documentos de archivos planos con códigos como HTML. El usuario define los códigos de marcación y sus nombres de sección correspondientes en un modelo de documento. El modelo de documento define las secciones de los documentos que se indexan y, por lo tanto, están disponibles para la búsqueda. Los nombres de las secciones son nombres descriptivos utilizados en las consultas en esa sección.
Para que el soporte de secciones esté disponible, debe especificar INDEXPROPERTY SECTIONS_ENABLED cuando habilite la columna de texto que contiene los documentos.
Un archivo de modelos de documentos lista todos los modelos de documentos definidos para la instancia del servidor. Cuando se crea una instancia del servidor, se crea automáticamente un archivo de modelos de documentos de ejemplo, DESMODEL.INI, en el subdirectorio de la instancia del servidor. El archivo está en la página de códigos ASCII .
La información de modelo de documento se copia en el directorio de índices. Si cambia el archivo de modelos de documentos para la instancia del servidor después de crear el índice, no afecta al soporte de secciones para el índice creado.
Por ejemplo, una búsqueda de McDaniel en la sección Autor en un índice con soporte de secciones puede ser parecida a la siguiente. La sección, en este caso Autor, siempre lleva el prefijo del nombre de modelo.
db2 "select count (*) from db2tx.htmltable where db2tx.contains(midescriptor,'MODEL mimodelohtml SECTION (autor) "Schmidt"') = 1
Las secciones pueden ser de diferentes tipos. Las secciones de texto plano no tienen ningún tipo. Las secciones con un tipo declarado se conocen como secciones de atributos. Los tipos de atributo soportados son:
Puede utilizar rangos de valores para buscar en documentos que contienen secciones de atributos. La sección debe tener el tipo de sección adecuado. En el ejemplo siguiente, la sección ABC debe tener el tipo TIME para poder dar soporte a la consulta:
recuperar todos los documentos que contengan valores entre 20:00:00 y 22:00:00 en la sección ABC
Una sección puede tener más de un valor de atributo. Separe los valores con un blanco o una nueva línea. No puede anidar secciones de atributos.
Puede incluir fechas, por ejemplo, la fecha de creación o la fecha de
publicación en la lista de secciones soportadas de un modelo de
documento. Se da soporte a los formatos de fecha siguientes:
Tabla 3. Formatos de fechas soportados
Nombre de formato | Formato | Ejemplo |
---|---|---|
ISO | AAAA-MM-DD |
1986-12-25 100-12-25 10123-2-17 |
DD-MM-AAAA |
01-10-1999 5-8-1990 | |
Estándar de EE.UU de IBM (USA) | MM/DD/AAAA |
08/18/1999 5/13/1977 |
AAAA/MM/DD |
1999/08/18 | |
Estándar europeo de IBM (EUR) | DD.MM.AAAA |
20.10.1999 1.5.1980 |
La búsqueda en un índice con soporte de secciones de todos los documentos publicados en una fecha determinada puede parecerse a la siguiente:
dessrch -s SERVER -x TESTIX -section sample/PublishingDate -term 1999-09-09
Se da soporte a los formatos de hora siguientes:
Tabla 4. Formatos de hora soportados
Nombre de formato | Formato | Ejemplo |
---|---|---|
ISO |
hh:mm:ss hh:mm hh.mm.ss hh.mm hh hhmm hhmmss |
19:00:23 19:00 19.00.23 19.00 19 1900 190013 |
Puede omitir los ceros iniciales para las horas. Los valores fuera
de los rangos siguientes no son válidos:
Horas | Minutos | Segundos |
---|---|---|
0-23 | 0-59 | 0-59 |
Se da soporte a los siguientes formatos:
Utilice blancos o líneas nuevas para separar los valores flotantes.
Los siguientes ejemplos muestran formatos correctos e incorrectos de
valores flotantes:
Formato correcto | Formato incorrecto |
---|---|
1000 1 1.0e3 1.0E3 1E3 .1E4 0.1E4 |
1 000 1,000 e3 |
Se da soporte a los enteros en el rango de -2147483648 a 2147483647. Utilice blancos para separar los enteros. Esto significa que la serie "42 234" de una sección de tipo INTEGER se resuelve en los valores enteros "42" y "234" y no en "42234".
Los ejemplos siguientes muestran formatos correctos e incorrectos para
valores de enteros:
Formato correcto | Formato incorrecto |
---|---|
1000 |
1.000 1,000 1 000 |
1000000 |
100.000 100,00 100 000 |
Nota |
---|
No se da soporte a los separadores específicos de idiomas ni a los formatos monetarios. |
Para archivos planos, las secciones se marcan utilizando códigos parecidos a HTML como, por ejemplo, <title> y <subject>. Un documento con secciones marcadas puede parecer lo siguiente:
<title> IBM Dictionary of Computing <author> McDaniel, George <subject> Computers, Reference, ....
Un archivo de modelos de documento para archivos planos o documentos HTML puede parecerse al siguiente. Los nombres de modelos y de secciones sólo pueden contener los caracteres A-Z, a-z y 0-9. Los nombres de modelos son siempre sensibles a las mayúsculas y minúsculas. Los nombres de sección pueden ser sensibles a las mayúsculas y minúsculas o no; se especifica el valor cuando se crea el modelo.
;lista de modelos de documentos ;el modelo siempre empieza por 'modelname' y el nombre del modelo [MODELS] modelname=ejemplo modelname=ejemplo2 modelname=ejemplo3 ; un 'ejemplo' de definición de modelo de documento ; izquierda - identificador del nombre de sección ; derecha - código del nombre de sección [ejemplo] Title = title Author = author Subject = subject Abstract = abstract Content = content PublishingDate=date [ejemplo2] Title = title Author = author Subject = subject [ejemplo3] Title = title Author = author Abstract = abstract Docnum = docnum
Si un documento contiene una sección marcada que no está definida en el modelo de documento, el contenido de la sección se incluye en la sección definida con anterioridad para la indexación y la búsqueda. Por ejemplo, un documento contiene las secciones de marcación siguientes:
<title> IBM Dictionary of Computing <subject> Computers, Reference, .... <author> McDaniel, George <abstract> Contiene la cobertura de información hasta el momento de sistemas de proceso de información, productos de comunicación y recursos, personal computers y sistemas de oficina, así como todo el rango de productos de hardware y software de IBM.
El modelo de documento, book, se define como:
[MODELS] modelname=book [book] Title = title Author = author Abstract = abstract
La sección <subject> no se incluye en el modelo de documento book. Cuando se indexa el documento, el contenido de la sección del tema se indexa con el contenido de la sección de título. También están disponibles para la búsqueda dentro de la sección de título.
Si especifica una lista de modelos cuando crea el índice, el modelo por omisión es el primero de la lista. Puede cambiar el modelo por omisión utilizando el mandato desmodix.
Para los índices con secciones habilitadas, los documentos XML deben estar estructurados correctamente y contener un elemento raíz. El nombre del elemento raíz debe ser igual a uno de los nombres de modelo definidos y las mayúsculas y minúsculas deben coincidir. La descripción del modelo en el archivo de modelos de documentos debe ser un subconjunto del modelo de documento definido en el archivo de DTD (definición de tipo de documento) para el documento.
La descripción del modelo debe empezar por el elemento raíz. Para cada elemento XML que desee utilizar como sección, debe incluir su jerarquía completa en la descripción del modelo. Si una sección es de tipo fecha, debe ser una hoja del árbol de modelos de documentos. No se da soporte a anidar las secciones de atributos.
La descripción de un modelo para documentos XML puede ser parecida a la siguiente:
; lista de modelos de documentos [MODELS] modelname = LETTER ; ejemplo de definición de modelo XML ; lado izquierdo = identificador de nombre de sección que codifica toda la vía de acceso ; lado derecho = códigos de nombre de sección que especifican el identificador ; para cada elemento de la vía de acceso del árbol hasta el ; nodo especificado. El delimitador de códigos es /. [LETTER] LETTER = LETTER LETTER/date = LETTER/DATE LETTER/address = LETTER/ADDRESS LETTER/address/City = LETTER/ADDRESS/CITY LETTER/Content = LETTER/CONTENT LETTER/Content/Greetings = LETTER/CONTENT/GREETINGS
Un documento XML puede parecerse al siguiente. También muestra cómo se indexan las secciones que no están definidas en el modelo.
<?xml version="1.0"?> <!DOCTYPE LETTER SYSTEM "letter.dtd"> <LETTER> <HEADER>Se ha saltado este código en la definición, para este texto se añadirá a la sección llamada LETTER </HEADER> <DATE> 01.01.2000 03.02.2000 </DATE> <ADDRESS> El texto se añadirá a la sección llamada LETTER/address. <CITY> El texto se añadirá a la sección llamada LETTER/address/City. </CITY> </ADDRESS> <CONTENT> El texto se añadirá a la sección llamada LETTER/Content. <NOSECTION>El texto se añadirá a la sección llamada LETTER/Content porque NOSECTION no está definida. </NOSECTION> <GREETINGS> El texto se añadirá a la sección llamada LETTER/Content/Greetings. </GREETINGS> </CONTENT> </LETTER>