BR Search
Início  Anterior  Próximo

minilogowi


seta BR Search



O BR/Search é um produto voltado para o gerenciamento de informações não estruturadas. Trata-se de um banco de dados onde o tipo de dado "Texto Corrido" é tratado com o mesmo nível de importância que qualquer outro campo chave, tradicionalmente utilizado nos bancos de dados que suportam o modelo relacional, embora não siga tal modelo. Em virtude disso, usa-se uma sintaxe proprietária para recuperação e inserção de informações.

Para recuperar todos os documentos que constam na base de dados, a sintaxe é:
@docn. Para listar apenas os documentos cujo ID seja maior do que 20, a sintaxe é: @docn > 20. Em geral, a sintaxe usada para recuperar documentos baseados em ID é:

@docn<condição>


Para realizar a pesquisa por um determinado texto na base basta digitar o texto a ser pesquisado, caso queira que a pesquisa seja feita em apenas um determinado parágrafo especifique-o entre colchetes. A sintaxe é a seguinte:

<texto> [<parágrafo>]


Existe uma função que retorna a meta-estrutura de uma base, e é ela:

|$wi.listmetastruct$|


Você também poderá fazer buscas com operadores
booleanos permitindo que termos sejam combinados por meio de operadores lógicos. Exemplo:

café [title] AND @docn > 20 AND NOT leite [title]

A expressão acima solicita que seja feita uma busca pela palavra
café no parágrafo title cujos IDs dos documentos sejam maior do que 20 e que a palavra leite não apareça no parágrafo title.

Para personalizar a consulta existem alguns parâmetros que podem ser utilizados entre chaves no inicio da expressão e separados por "ponto e virgula" e são eles:

hlon ou highlighton - define o inicio do highlight. Ex: <b> 
hloff ou highlightoff - define o final do highlight. Ex: </b> 
subparon - define o que deverá vir antes de cada subparagrafo (só funciona no texto.subpars). Ex: <b>
subparoff - define o que deverá vir após cada subparagrafo (só funciona no texto.subpars). Ex: </b>
sort - define a ordenação utilizada nos paragrafos. Ex: PAR1,PAR2,-PAR3 
plural - define o uso ou não de plural (default false). Ex: true ou false 
adjacentlevel - define o nível de adjacência da consulta. Ex: 3 
thesaurus - define o uso de um thesaurus. Ex: teste ou teste [BT,NT] 
database - define um database a ser consultado (default o da conexão). Ex: SAMP
 

Para ativar o destaque das palavras pesquisadas defina as propriedades
hlon e hloff com as tags que serão usadas para marcar o início e o fim do destaque, a sintaxe é a seguinte:

{ hlon=<tag-inicial> ; hloff=<tag-final> } <texto-de-pesquisa>

Por exemplo, para que a palavra
leite venha destacada em negrito no resultado de uma pesquisa poderia-se usar o seguinte:

{ hlon=<b> ; hloff=</b> } leite

Um consulta ao BRSearch cria um vetor de subparágrafos para cada parágrado, baseando-se em seu nome e com suporte ao Grid ObjetoWI:

Parágrafo "Texto":
texto = valor do paragrafo
texto.subpars = valor de todos os subparagrafos (utiliza subpar on/off)
texto.subpars.size() = quantidade de subparagrafos
texto.subpars[1].value = valor de um determinado subparagrafo


É interessante para o desenvolvedor saber que a última consulta realizada ao BRSearch é armazenada no WI, sendo assim existe uma forma dinâmica de recuperar um determinado
docn (detalhe) que é utilizando um gravar num objeto WI com a função |$wi.brs(|tmp.docn|)$| e também passarão a existir "wi.brs.first, wi.brs.last, wi.brs.next, wi.brs.prev"

Para realizar inserções na base de dados usa-se uma sintaxe semelhante àquela usada em instruções SQL:

DELETE WHERE @docn=|tmp.id|

INSERT VALUES (|tmp.ti|,|tmp.tx|,|tmp.cr|)
INSERT (ti,tx,cr) VALUES (|tmp.ti|,|tmp.tx|,|tmp.cr|)
INSERT (ti longo,tx,cr longo) VALUES (|tmp.ti|,|tmp.tx|,|tmp.cr|)
INSERT (ti_longo,tx,cr_longo) VALUES (|tmp.ti|,|tmp.tx|,|tmp.cr|)

UPDATE VALUES (|tmp.ti|,|tmp.tx|,|tmp.cr|) WHERE @docn=|tmp.id|
UPDATE (ti,tx,cr) VALUES (|tmp.ti|,|tmp.tx|,|tmp.cr|) WHERE @docn=|tmp.id|
UPDATE (ti longo,tx,cr longo) VALUES (|tmp.ti|,|tmp.tx|,|tmp.cr|) WHERE @docn=|tmp.id|
UPDATE (ti_longo,tx,cr_longo) VALUES (|tmp.ti|,|tmp.tx|,|tmp.cr|) WHERE @docn=|tmp.id|

onde
ti_longo é o input name sem "." e ":"