Professional Documents
Culture Documents
2V
Objectivos Específicos ................................ ................................ ................................ ...... 2V
Metodologia................................ ................................ ................................ .......................... 2V
INTRODUÇÃO ................................ ................................ ................................ .................... 3V
Full Text Search ................................ ................................ ................................ .................... 4V
Criação de Full Text Catalog ................................ ................................ ................................ . 4V
Criação de Full Text Index ................................ ................................ ................................ .... 5V
Change Tracking ................................ ................................ ................................ ............... 7V
Linguagem, separadores de palavras e derivativos................................ ................................ . 8V
Consulta de Full Text Data ................................ ................................ ................................ .... 9V
FREETEXT ................................ ................................ ................................ ...................... 9V
FREETEXTTABLE ................................ ................................ ................................ .......... 9V
CONTAINS ................................ ................................ ................................ .................... 10V
Thesaurus (Dicionário de sinônimos) ................................ ................................ .................. 13V
Stop Lists ................................ ................................ ................................ ............................ 14V
Preencher Full Text Indexes ................................ ................................ ................................ 14V
Conclusão ................................ ................................ ................................ ........................... 16V
Bibliografia ................................ ................................ ................................ ......................... 17V
V V
! VV
V
O tempo de resposta aos pedidos efectuados às Base de Dados é uma das questões mais
preponderantes no que diz respeito a performance e desempenho destas, principalmente nas
consultas de pesquisa de textos simples e ficheiros de textos. Sendo assim, deve-se
implementar um mecanismo de busca mais rápido que faça consultas procurando por partes
de sequência de caracteres de uma forma rápida de forma a melhorar significativamente a
performance e posterior desempenho das Base de Dados.
V
V
Implementação da funcionalidade Full Text Search no Sistema de Base de Dados SQL
SERVER 2008.
V V
V Criar de Catalogos para armazenamento de Full Text Index
V Criar de Full Text Index usando GUI (Graphical User Interface) e usando
Transactional SQL
V Implementação de novos conceitos de Indice Full para o Sistema de Gestão de Base
de dados Sql Server na sua versão de 2008.V
V
Este tema tem vindo a sofrer mudanças positivas desde a sua idealização. Neste contexto este
trabalho de pesquisa baseou-se na metodologia de Análise e Documentos já existentes.
V V
R !V
Os índices mais usados em um bases de dados do SQL Server são em cluster e índices não-
clusterizados que são organizados em uma estrutura de árvore binária.
Neste trabalho de pesquisa, iremos fazer uma abordagem sobre o Full-Text Indexing
mostrando como projectar e criar, visando atender as necessidades de desempenho em
consultas de grandes quantidades de texto.
V
FuV V
V
Full Text Search refere-se a uma funcionalidade do SQL Server que suporta consultas do tipo
Full Text sobre dados do tipo caracteres.
Este tipo de consultas pode incluir tanto palavras, frases como variações de palavras e frases.
Para o suporte de consultas do tipo Full Text Search, tem de se implementar Full Text
Indexing nas colunas definidas na consulta. As colunas podem ser de tipos de dados de
caracteres (tais como char e varchar) ou tipos de dados binários (varbinary ou image) ou
ainda XML (Extensible Markup Language). O Full Text Indexing é caracterizado pela
divisão em palavras ou tokens derivadas dos textos indexados. Por exemplo se o texto
indexado contém a frase ³Tabelas podem conter índices´, o Full Text Indexing teria quatro
palavras ou tokens: ³Tabelas´, ³podem´, ³conter´ e ³índices´. E porque listas de símbolos
podem ser facilmente pesquisadas, as consultas Full Text podem rapidamente localizar as
palavras necessárias.
[ VFR"V2ilegroup]
[R V ö irectório (rootpath)¶
[$R <Opções_do_Catálogo>]
[ V!F "]
Onde:
<Opções_do_Catálogo>=:
Os Full Text Catalog estão directamente associados a uma base de dados específica. A única
cláusula obrigatória é CREATE FULLTEXT CATALOG onde se especifica qual é o nome
pretendido para o catálogo. Pode-se ainda definir se o catálogo é padrão ou não, se sim todos
os Full Text Index que não forem atribuídos catálogos serão armazenados no catálogo padrão.
ACCENT_SENSITIVITY permite configurar se o mecanismo de Full Text considera
acentuação quando criado ou ao consultar um Full Text Index. Se alterar-se a opção de
ACCENT_SENSITIVITY, será necessário recriar todos os Full Text Index dentro do
catálogo.
A cláusula AS DEFAULT funciona da mesma forma a opção DEFAULT (padrão) para um
grupo de arquivos. Se não se especificar um nome de catálogo ao criar um Full Text Index, o
SQL Server cria o índice dentro do catálogo que está marcado como o Full Text Catalog
padrão.
A opção AUTHORIZATION (autorização) especifica o proprietário do Full Text Catalog. O
proprietário especificado deve ter permissão APROPRIAR no Full Text Catalog.
[{(nome_da_coluna,
[" termo_da_língua]
} [..n]
)]
$ %VR <PK_TablesPrimaryKey>
[ <catalog_filegroup_option>]
{fulltext_catalog_name
| ( FILEGROUP filegroup_name )}
<>::=
O parâmetro V" designa a coluna que contém o tipo de filtro que o motor de
Full Text Indexing utiliza quando processa uma coluna VARBINARY (MAX). O paramento
" é opcional e é usado para especificar a língua dos dados a serem indexados. O
parâmetro $V R !# é a coluna única na tabela ou na indexed view, que identifica de
forma única as linhas.
V
&V
A opção CHANGE_TRACKING para um Full Text Index determina como o SQL Server faz
a manutenção dos índices quando a informação é alterada na base de dados. Quando a opção
MANUAL ou AUTO é especificada, o SQL Server actualizaVa lista de alterações na base de
dadosV para os dados indexados. Quando opção MANUAL é especificada, o utilizador é
responsávelVpor periodicamente sincronizar as alterações para o Full Text Index. Não mantém
a lista de alterações actualizada. Quando definida como AUTO, o SQL Server actualiza
automaticamente o Full Text Index sempre que os dados são modificados. Ao contrário de
um índice relacional, o preenchimento (populate) de um Full Text Index não é um processo
imediato porque os dados têm de ser enviados para o mecanismo de indexação, que, em
seguida, aplica-se a separadores de palavras, derivativo, arquivos de idioma, e Stop lists antes
de efectuar as alterações no índice. Quando CHANGE_TRACKING é especificado como
OFF, o SQL Server não mantém uma lista de alterações de dados subjacentes. Portanto, se
quisermos actualizar o índice para mostrar os dados actualmente na coluna indexada, deve-se
repovoar o índice completamente. Com CHANGE_TRACKING desactivado, também se
pode especificar a opção NO POPULATION, que permite-nos criar o Full Text Index sem
preencher após a criação inicial.
F#VV
As consultas FREETEXT são a forma mais básica das pesquisas Full Text. A sintaxe
genérica para a consulta FREETEXT é:
F# ( { column_name | (column_list) | * }
F Production.ProductDescription
$ F#(Description,N'bike')
V
F# ("V
Retorna um resultado com informações adicionais que classifica os resultados de acordo com
como a correspondência se aproxima do termo da pesquisa original.
É a sintaxe genérica para FREETEXTTABLE
F# (" (| , {
| (
|) | * }
, '2 |
|
| '
[ ,"
| ]
[ ,|
] )
FROM Production.ProductDescription a
ORDER BY b.[Rank]
GO
R VV
Para consultas que exigem uma maior flexibilidade, pode-se usar o predicado R ,
que permite:
Pesquisar formas de palavras
âV Pesquisa por proximidade de palavra;
âV Fornecer ponderação relativa aos termos.
( {
| (
|) | * }
, '< |
| >'
[,"
| ] )
< |
| > ::=
{
| > | < 2
| > | < |
| >
| <
|
| > | < |
| > }
| { ( < |
| > )
< |
| > [ ... ] }
Vsimple_term VV
word VVphrase V
Vgeneration_term VV
V
VV VV
VVVVsimple_term VVn VV
Vproximity_term VV
VV
VVVV
Vweighted_term VV
VVproximity_term VV
Termos de pesquisa podem ser usados para qualquer correspondência exacta ou como
prefixos. A consulta a seguir retorna os produtos com uma correspondência exacta da palavra
µbike¶. Embora a consulta pareça ser quase exactamente o mesmo que a versão FREETEXT,
a consulta CONTAINS retorna menos duas linhas devido a correspondência exacta, como
segue:
SELECT ProductDescriptionID, Description
FROM Production.ProductDescription
GO
FROM Production.ProductDescription
GO
FROM Production.ProductDescription
GO
Porque os Full Text Indexes são construídos contra dados não estruturados, o índice
armazena a proximidade de uma palavra para outra além disso para a indexação das palavras
encontradas dentro dos dados. Pesquisa de proximidade é realizada usando a palavra-chave
NEAR. Embora seja possível executar pesquisas de proximidade e pesquisas de proximidade
ponderada usando CONTAINS, esses tipos de pesquisas geralmente são executados usando
R ("Vpara usar o valor de classificação que é calculado.
A consulta a seguir retorna todas as linhas onde µbike¶ está perto de performance . O valor
de classificação é afectado pela distância entre as duas palavras:
SELECT a.ProductDescriptionID, a.Description, b.*
R ("V(Production.ProductDescription, Description,
ORDER BY b.[Rank]
GO
A consulta a seguir retorna as 10 linhas por posto de acordo com a média ponderada das
palavras per2ormance, com2ortable, smooth, sa2e, e competition:
smooth WEIGHT (.2) , safe WEIGHT (.5), competition WEIGHT (.5))', 10)
b ON a.ProductDescriptionID = b.[Key]
GO
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<expansion>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</expansion>
<replacement>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</replacement>
<expansion>
<sub>run</sub>
<sub>jog</sub>
</expansion>
</thesaurus>
-->
</XML>
V"VV
Listas de Paragem (Stoplists), conhecidas em versões anteriores do SQL Server como
ficheiros de palavras irrelevantes, são usadas para excluir palavras que se deseja incluir em
um Full Text Index.
âV F"" reprocessa cada linha de dados subjacentes para reconstruir o Full Text Index
completamente;
âV R " processa apenas as linhas que foram alteradas desde o último
preenchimento.
âV ! processa quaisquer alterações desde a última actualização do índice.
Requer que a opção CHANGE_TRACKING esteja habilitada para o índice e definida
como MANUAL.
V
uV
Full Text Index responde de maneira espectacular nas consultas complicadas e é
suficientemente versátil para trabalhar em máquinas não tão potentes. A única precaução a
temer é quando dispomos de grande quantidade de registos. Deverá dispor de um tempo
inicial alto e talvez deva pensar em particionar suas tabelas horizontalmente para obter
excelentes resultados
wV Pode-se ter vários (na verdade, até 250) índices por tabela no SQL Server, porém só
pode ter apenas um Full-Text Index por tabela.
wV Existe apenas uma entrada para cada índice com sua respectiva linha de dados, no
Full-Text Index pode haver muitas entradas para cada linha, porque cada linha é
quebrada em palavras separadas.
wV Os índices no SQL Server são mantidos individualmente, enquanto que os Full-Text
Indexes são agrupadas em catálogos para facilitar de manutenção.
V V
(
V
wV WALTERS, Robert E. et all. ccelerated SQK Server 2008, Apress, 2008
wV DAVIDSON, Louis, KLINE, Kevin. Pro SQK Server 2008 Relational atabase
esign and Implementation, Apress, 2008.
wV HOTEK, Mike, `icroso2t SQK Server 2008 ± Implementation and `aintenance,