Pode utilizar as funções CONTAINS e SCORE numa instrução SQL com o OMNIFIND. CONTAINS e SCORE são utilizadas para efectuar procuras num índice de procura de texto, utilizando critérios de argumentos de procura especificados pelo utilizador. Pode também indexar e procurar documentos XML.
CONTAINS
Pode utilizar a função CONTAINS para procurar um índice de procura de texto, utilizando critérios especificados num argumento de procura. A função devolve um resultado que indica se foi encontrada uma correspondência.
CONTAINS ( nome-coluna , argumento-procura
, constante-cadeia
(1)
)
Notas:
1 constante-cadeia tem de estar em conformidade com as regras das opções de argumento-procura.
opções-argumento-procura: (1) QUERYLANGUAGE = valor RESULTLIMIT = valor OFF SYNONYM = ON Notas:
1 Não é possível especificar a mesma cláusula mais do que uma vez. O esquema é QSYS2.
nome-coluna
Especifica um nome qualificado ou não qualificado de uma coluna que inclui um índice de procura de texto que será procurado. A coluna tem de existir na tabela ou vista identificada na cláusula
FROM da instrução. A coluna da tabela, ou a coluna da tabela base subjacente, tem de ter um índice de procura de texto associado (SQLSTATE 38H12). A expressão subjacente da coluna de uma vista tem de corresponder a uma referência de coluna simples à coluna de uma tabela subjacente, directamente ou através de outra vista imbricada.
argumento-procura
Especifica uma expressão que devolve um valor de cadeia que contém os termos utilizados na procura. A expressão não pode ser constituída apenas por espaços em branco ou pela cadeia vazia (SQLSTATE 38H14). O comprimento real da cadeia não pode exceder 32704 bytes. Este comprimento poderá ser ainda mais limitado, dependendo do que for suportado pelo servidor de procura de texto (SQLSTATE 38H10). O valor é convertido em Unicode antes de ser utilizado para procurar o índice de procura de texto.
constante-cadeia
Identifica uma constante de cadeia que especifica as opções do argumento de procura activadas para a função.
As opções que podem ser especificadas como parte das opções-argumento-procura são as seguintes:
QUERYLANGUAGE=valor
Especifica o idioma da consulta. O valor pode corresponder a qualquer um dos códigos de idioma suportados. Se a opção QUERYLANGUAGE não for especificada, a predefinição corresponde ao valor de idioma do índice de procura de texto utilizado quando esta função é invocada. Se o valor de idioma do índice de procura de texto for AUTO, o valor predefinido para QUERYLANGUAGE é en_US.
RESULTLIMIT=valor
Especifica o número máximo de resultados que serão devolvidos pelo motor de procura subjacente. O valor pode corresponder a um valor inteiro 1 - 2 147 483 647. Se a opção RESULTLIMIT não for especificada, não existirá qualquer valor limite para a consulta. Esta função escalar poderá não ser chamada para cada linha de resultados, dependendo do plano seleccionado pelo optimizador. Esta função pode ser chamada uma vez para a totalidade da consulta ao motor de procura subjacente. É devolvido um conjunto de
resultados de todas as chaves principais correspondentes. Este conjunto de resultados é, em seguida, anexado à tabela que contém a coluna, de modo a identificar as linhas de resultados. Neste caso, o valor de RESULTLIMIT actua como FETCH FIRST ?? ROWS do motor de procura de texto subjacente e pode ser utilizado como uma optimização. Se o motor de procura for chamada para cada linha do resultado devido ao facto de este ser considerado o melhor plano, a opção RESULTLIMIT é ignorada.
SYNONYM =OFF ou SYNONYM = ON
Especifica se deve ou não ser utilizado um dicionário de sinónimos associado ao índice de procura de texto. Pode adicionar um dicionário de sinónimos a uma recolha, utilizando a ferramenta de sinónimos.
OFF OFF é o valor predefinido.
ON Utilize o dicionário de sinónimos associado ao índice de procura de texto.
O resultado da função consiste num número inteiro grande. Se o segundo argumento puder ser nulo, o resultado pode ser nulo. Se o segundo argumento for nulo, o resultado será um valor nulo.
O resultado será 1 se o documento incluir uma correspondência para os critérios de procura especificados no argumento de procura. Caso contrário, o resultado será 0. O resultado será igualmente 0 se o valor da coluna for nulo. Se o argumento da procura for Nulo, o resultado corresponderá ao valor nulo.
Exemplo 1
A instrução que se segue localiza todos os funcionários que tenham COBOL no currículo.
SELECT EMPNO FROM EMP_RESUME
WHERE RESUME_FORMAT = ’ascii’ AND CONTAINS(RESUME, ’COBOL’) = 1
Exemplo 2
O argumento de procura não tem de ser uma constante de cadeia. O argumento de procura pode corresponder a qualquer expressão de cadeia SQL, incluindo uma cadeia contida numa variável de sistema central. O instrução que se segue procura o termo exacto "ate" na coluna COMMENT.
Nota: O termo "ate" tem de estar delimitado por aspas de modo a que apenas o termo exacto seja procurado e as variações linguísticas não sejam tidas em consideração.
char search_arg[100]; /* input host variable */ ...
EXEC SQL DECLARE C3 CURSOR FOR SELECT CUSTKEY
FROM K55ADMIN.CUSTOMERS
WHERE CONTAINS(COMMENT, :search_arg)= 1 ORDER BY CUSTKEY;
strcpy(search_arg, "\"ate\""’); EXEC SQL OPEN C3;
...
Exemplo 3
A instrução que se segue localiza, aleatoriamente, 10 estudantes que escreveram redacções online que contêm a expressão "combustível fóssil" em espanhol, "combustible fósil." Estes estudantes são necessários para uma entrevista de rádio. Utilize o dicionário de sinónimos criado para o índice de procura de texto associado. Uma vez que apenas são necessários 10 estudantes, optimize a consulta utilizando a opção RESULTLIMIT para limitar o número de resultados do servidor de procura de texto subjacente.
SELECT FIRSTNME, LASTNAME FROM STUDENT_ESSAYS
WHERE CONTAINS(TERM_PAPER, ’combustible fósil’,
’QUERYLANGUAGE= es_ES RESULTLIMIT = 10 SYNONYM=ON’) = 1
Tarefas relacionadas:
“Procurar num índice de procura de texto” na página 14
Pode efectuar procuras num índice de procura de texto, utilizando uma instrução SQL com uma função CONTAINS ou SCORE. Os critérios de argumentos de procura são especificados na função.
Referências relacionadas: “SCORE”
Pode utilizar a função SCORE para procurar um índice de procura de texto, utilizando critérios
especificados num argumento de procura. A função devolve uma classificação de relevância que avalia o nível de correspondência de uma documento relativamente à consulta.
“Sintaxe de argumentos de procura” na página 45
Pode especificar um argumento de procura como condição de uma procura de termos em documentos de texto. O argumento é constituído por parâmetros de procura e um ou mais termos de procura. As funções de procura de texto escalar de SQL que utilizam argumentos de procura são CONTAINS e SCORE.
SCORE
Pode utilizar a função SCORE para procurar um índice de procura de texto, utilizando critérios
especificados num argumento de procura. A função devolve uma classificação de relevância que avalia o nível de correspondência de uma documento relativamente à consulta.
(1)
SCORE ( nome-coluna , argumento-procura
, constante-cadeia
)
Notas:
1 constante-cadeia tem de estar em conformidade com as regras das opções de argumento-procura.
opções-argumento-procura: (1) QUERYLANGUAGE = valor RESULTLIMIT = valor OFF SYNONYM = ON Notas:
1 Não é possível especificar a mesma cláusula mais do que uma vez. O esquema é QSYS2.
nome-coluna
Especifica um nome qualificado ou não qualificado de uma coluna que inclui um índice de procura de texto que será procurado. A coluna tem de existir na tabela ou vista identificada na cláusula FROM da instrução. A coluna da tabela, ou a coluna da tabela base subjacente, tem de ter um índice de procura de texto associado (SQLSTATE 38H12). A expressão subjacente da coluna de uma vista tem de corresponder a uma referência de coluna simples à coluna de uma tabela subjacente, quer directamente quer através de outra vista imbricada.
argumento-procura
Especifica uma expressão que devolve um valor de cadeia que contém os termos utilizados na procura. A expressão não pode ser constituída apenas por espaços em branco ou pela cadeia vazia (SQLSTATE 38H14). O comprimento real da cadeia não pode exceder 32704 bytes. Este comprimento poderá ser ainda mais limitado, dependendo do que for suportado pelo servidor de procura de texto (SQLSTATE 38H10). O valor é convertido em Unicode antes de ser utilizado para procurar o índice de procura de texto.Se argumento-procura for nulo, o resultado corresponderá ao valor nulo. constante-cadeia
Identifica uma constante de cadeia que especifica as opções do argumento de procura activadas para a função.
As opções que podem ser especificadas como parte das opções-argumento-procura são as seguintes:
QUERYLANGUAGE=valor
Especifica o idioma da consulta. O valor pode corresponder a qualquer um dos códigos de idioma suportados. Se a opção QUERYLANGUAGE não for especificada, a predefinição corresponde ao valor de idioma do índice de procura de texto utilizado quando esta função é invocada. Se o valor de idioma do índice de procura de texto for AUTO, o valor predefinido para QUERYLANGUAGE é en_US.
RESULTLIMIT=valor
Especifica o número máximo de resultados devolvidos pelo motor de procura subjacente. O valor pode corresponder a um valor inteiro 1 - 2 147 483 647. Se a opção RESULTLIMIT não for especificada, não existirá qualquer valor limite para a consulta.
Esta função escalar poderá não ser chamada para cada linha de resultados, dependendo do plano seleccionado pelo optimizador. Esta função pode ser chamada uma vez para a totalidade da consulta ao motor de procura subjacente. É devolvido um conjunto de
resultados de todas as chaves principais correspondentes. Este conjunto de resultados é, em seguida, anexado à tabela que contém a coluna, de modo a identificar as linhas de resultados. Neste caso, o valor de RESULTLIMIT actua como FETCH FIRST ?? ROWS do motor de procura de texto e pode ser utilizado como uma optimização. Se o motor de procura for chamada para cada linha do resultado devido ao facto de este ser considerado o melhor plano, a opção RESULTLIMIT é ignorada.
SYNONYM =OFF ou SYNONYM = ON
Especifica se deve ou não ser utilizado um dicionário de sinónimos associado ao índice de procura de texto. Pode adicionar um dicionário de sinónimos a uma recolha, utilizando a ferramenta de sinónimos.
OFF OFF é o valor predefinido.
ON Utilize o dicionário de sinónimos associado ao índice de procura de texto. O resultado da função consistem num número de vírgula flutuante de precisão dupla. Se o segundo argumento puder ser nulo, o resultado pode ser nulo. Se o segundo argumento for nulo, o resultado será um valor nulo.
O resultado será maior que 0 mas menor que 1 se a coluna incluir uma correspondência para os critérios de procura especificados pelo argumento de procura. Quanto maior for a frequência de localização de uma correspondência, maior será o valor do resultado. Se a coluna não incluir uma correspondência, o resultado será 0. A classificação corresponderá igualmente a 0 se o valor da coluna for nulo.
SCORE é uma função não determinista.
Exemplo
A instrução que se segue gera uma lista de funcionários ordenada pelos resumos que apresentam a melhor correspondência com programmer AND (java OR cobol). Além disso, é devolvido um valor de relevância normalizado entre 0 (zero) e 100.
SELECT EMPNO, INTEGER(SCORE(RESUME, ’programmer AND (java OR cobol)’) * 100) AS RELEVANCE
FROM EMP_RESUME
WHERE RESUME_FORMAT = ’ascii’ ORDER BY RELEVANCE DESC
Tarefas relacionadas:
“Procurar num índice de procura de texto” na página 14
Pode efectuar procuras num índice de procura de texto, utilizando uma instrução SQL com uma função CONTAINS ou SCORE. Os critérios de argumentos de procura são especificados na função.
Referências relacionadas: “CONTAINS” na página 40
Pode utilizar a função CONTAINS para procurar um índice de procura de texto, utilizando critérios especificados num argumento de procura. A função devolve um resultado que indica se foi encontrada uma correspondência.
“SYSPROC.SYSTS_CREATE” na página 19
Pode chamar o procedimento armazenado SYSPROC.SYSTS_CREATE para criar um índice de procura de texto. Este procedimento armazenado activa uma coluna de texto para indexação de procura de texto. O índice de procura de texto pode, deste modo, ser utilizado em consultas SQL que contenham as funções CONTAINS ou SCORE.
“Sintaxe de argumentos de procura” na página 45
Pode especificar um argumento de procura como condição de uma procura de termos em documentos de texto. O argumento é constituído por parâmetros de procura e um ou mais termos de procura. As funções de procura de texto escalar de SQL que utilizam argumentos de procura são CONTAINS e SCORE.