BR Search | Início Anterior Próximo

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 ":"