Sei sulla pagina 1di 7

288 288

Full Text Search


En aplicaciones
289
El alcance de la bsqueda es el siguiente:
Base de Datos solamente se buscar en las tablas
asociadas a transacciones definidas como Business
Component (ttulo y valor almacenado en sus atributos).
Todo archivo almacenado en el disco duro.
Es posible habilitar este mecanismo de bsqueda a los usuarios finales
de una aplicacin generada.
Full Text Search
En una aplicacin generada
290 290
Full Text Search
Propiedad Searchable:
A nivel de las propiedades del Generador.
A nivel de las propiedades de cada Business Component
Propiedades a nivel del Generador:
Searchable: Si se configura en su valor True, indica que toda Transaccion dentro de la KB definida como
Business Component ser searchable. Puede modificarse el valor a nivel de cada BC, si se desea.
Search Engine: Indica el motor de bsqueda que se utiliza. Esta propiedad solo queda habilitada si se
estableci el valor True en la propiedad Searchable.
Index directory: Indica el directorio donde se almacenarn los ndices para la bsqueda. Esta propiedad solo
queda habilitada si se estableci el valor True en la propiedad Searchable.
Propiedades a nivel de cada BC:
Searchable Transaction:
Search viewer Transaction: Es el visor asociado a la Transaccin cuando el resultado de la bsqueda
involucra a la misma Transaccin. Es un objeto GeneXus que recibir como parmetro la clave primaria de la
Transaccin. Por defecto, el objeto que se carga es:
* La vista de la Transaccin a travs del pattern Work With (si es que se aplic este pattern)
* La propia Transaccin en su modo Dsplay (si no hay pattern Work With aplicado)
291 291
Full Text Search
Tipos de datos y funciones
Funcin Search:
TextSearch.Find(Char &query,Num &ItemsPerPage,Num
&PageNumber): SearchResultItem Collection
Funciones de indexado:
TextSearch.Add(BC|File|Char,ContentInfo &info): Boolean
TextSearch.Update(BC|File|Char,ContentInfo &info):Boolean
TextSearch.Delete(BC|File|Char):Boolean
TextSearch.Reindexall():Numeric
Otras funciones:
TextSearch.BuildDictionary()
TextSearch.CheckSpell()
TextSearch.HTMLPreview()
Para poder realizar Full Text Search, previamente los datos se deben indexar. Opcionalmente
se puede armar el contenido a indexar, por lo cual se usa el tipo de datos ContentInfo. De lo
contrario, cuando se invoque a las funciones de indexacin el contenido a indexar tomar
valores default. El significado de las propiedades de ContentInfo y los valores default se
explican a continuacin:
ContentInfo Properties:
Id (character) : Clave del documento utilizada para recuperar el objeto desde su lugar de origen.
Valores por defecto:
- BC: Nombre de la Trn +Claves de la Trn
- Archivo: Nombre completo del archivo
Viewer (character) : URL indicada para desplegar el resultado de una bsqueda.
Valores por defecto:
- BC: Valor de la propiedad Search Viewerasociada a la Transaccin
- Archivo: File path
Type (character) : Identificador de tipo.
Valores por defecto:
- BC: Nombre de la Transaccin
- Archivo: GxFile
Title (character) : Ttulo del contenido.
Valores por defecto:
- BC: Description Attribute de la Transaccin definida como BC.
- Archivo: Nombre del archivo (File name)
292
SearchResultItem representa el resultado de la bsqueda. Cada una de sus propiedades se mapea con una
del tipo ContentInfo, que corresponde precisamente al valor con el cual fue indexado el contenido encontrado.
SearchResult: Es coleccin de SearchResultItem
SearchResultItem Properties:
Title (character) : Titulo del contenido
Viewer (character) : URL indicada para desplegar el resultado de una bsqueda.
Id (Character) : Clave del documento utilizada para recuperar el objeto desde su lugar de origen.
Score (numeric) : Es un numero mayor que 0 y menor o igual a 1. Indica que tan cerca el documento verifica el
patrn de bsqueda. Por defecto, el resultado de la bsqueda es ordenado por el Score.
TimeStamp (DateTime) : TimeStamp de lo ltimo que se index.
Type (character) : Identificador del tipo.
MaxItems (numeric) : Cantidad mxima de items encontrados.
ElapsedTime (Numrico) : Tiempo en milisegundos que tardo la bsqueda
Search Function:
TextSearch.Find(Character Content, [optional] Numeric ItemsPerPage, [optional] Numeric PageNumber) :
collection of SearchResultItem
Index Functions:
TextSearch.Add( Variable (BC | File | string) [, ContentInfo info]):Boolean
Agrega contenido al ndice.
TextSearch.Update(Variable (BC | File | string) [, ContentInfo info]):Boolean
Elimina contenido si ya existe y luego inserta el nuevo contenido.
TextSearch.Delete(Variable (BC | File | string)):Boolean
Elimina el contenido del ndice.
TextSearch.Reindexall():Numeric
Indexa todo el contenido de las tablas definidas en GeneXus como Searchable Business Components.
293
Full Text Search
Event 'Search'
&SearchResult = TextSearch.Find(&searchpattern)
for &SearchResultItem in &SearchResult.Items()
&title =&searchResultItem.Title
&title.Link =&searchResultItem.Viewer
&file.Source =&SearchResultItem.Id //&file es de tipo File.
&preview =TextSearch.HTMLPreview(&file,&searchpattern,'HTML','<span STYLE="COLOR: red">
','</span>',200,1)
SearchResultsGrid.load()
endfor
EndEvent
Ejemplos
1. Bsqueda en archivos del file system:
&SearchResult es de tipo SearchResult
&SearchResultItem es de tipo SearchResultItem
&File es de tipo File
La lgica de bsqueda es siempre igual, independientemente de si el resultado encontrado sea un archivo o
datos de la base de datos. Esto es porque la informacin se almacena en los mismos ndices. De todas
maneras, se puede discriminar mediante la propiedad Type de SearchResultItem si el resultado obtenido es un
archivo o datos de una tabla.
Mediante este ejemplo se realiza una bsqueda por &searchpattern, sabiendo que los resultados encontrados
son archivos, y se obtiene el Title y Viewer del resultado de la bsqueda para ser visualizados.
294
2. Bsqueda en la base de datos
Full Text Search
Sub 'Paging'
&SearchResult = TextSearch.Find(&searchpattern,&items,&currentpage)
for &SearchResultItem in &SearchResult.Items()
&title =&searchResultItem.Title
&title.Link =&searchResultItem.Viewer
&type =&searchResultItem.Type
&score =&SearchResultItem.Score
&TimeStamp =&SearchResultItem.TimeStamp
if &type =Airline'
&Airline.Load(&SearchResultItem)
&preview =TextSearch.HTMLPreview(&Airline,&searchpattern,'HTML','<span
STYLE="background: yellow">','</span>',200,1)
endif
grid1.Load()
endfor
EndSub
&SearchResult es de tipo SearchResult
&SearchResultItem es de tipo SearchResultItem
&Airline es de tipo Airline (Business
Component)
Event 'Previous'
if &currentpage >1
&currentpage -=1
do 'Paging'
endif
EndEvent
En este ejemplo se consulta la propiedad Type de SearcResultItempara que en caso de ser un Business
Component de tipo Airline se pueda armar un preview con la informacin recuperada.
En particular este cdigo es una subrutina que se invoca para realizar un paginado sobre los resultados
encontrados.
Por ms informacin consultar:
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?5278

Potrebbero piacerti anche