/*Cria um ambiente de teste
WINXP(SP3)+SQL SERVER2005(SP3)*/
se object_id('tb') não for nulo
mesa drop tb
ir
criar tabela tb
(id int identidade(1,1),
título varchar(200),
detalhe varchar(1000),
restrição pk_id chave primária (id) – necessária ao construir um índice de texto completo
)
inserir em tb
selecione 'Os Rockets estão prestes a assinar um atirador novato',' É relatado que as negociações do contrato entre Budinger e os Rockets foram concluídas ontem, e Budinger receberá o mesmo contrato que Taylor. Anteriormente, a mídia revelou que o contrato de Taylor tem duração de quatro anos e vale um total de 10.000 dólares americanos, dos quais os primeiros dois anos são contratos garantidos. Espera-se que Budinger anuncie formalmente sua contratação para ingressar no Rockets nos próximos dias. '
união tudo
select 'Foi revelado que Weaver assinou um contrato com os gigantes gregos', 'De acordo com a International Basketball Network, o ex-jogador do Rockets Van Weaver assinou um contrato com os gigantes gregos Olympiacos. Weaver recebeu um contrato de dois anos no valor de US$ 10.000. '
união tudo
selecione 'Os Spurs gastaram muito dinheiro para lutar contra o Lakers', 'Os Spurs contrataram vários generais durante a entressafra de verão. O técnico Greg Veach revelou recentemente em uma entrevista ao Yahoo Sports que os Spurs não hesitaram em pagar o. imposto de luxo para construir um edifício luxuoso A escalação foi projetada para lutar contra o Lakers e lutar pelo quinto campeonato. '
união tudo
selecione 'Wallace nunca pensou em deixar o Motor City', 'Ben Wallace concordou em retornar ao Detroit Pistons e assinou um contrato de US$ 10.000 por ano com o Pistons com o salário mínimo do veterano, de acordo com o Daily Herald ” Colunista Mick. McGraw revelou que o defensor interno que dominava a NBA naquela época nunca pensou em deixar o Pistons. '
união tudo
selecione 'Miller é tão bom em lutar pelo amor e perseguir sua esposa', 'Para aqueles "posteriores" que nunca viram Reggie Miller criar "Miller Time" com os Pacers, como devemos apresentar esta ex-estrela da NBA? Poderia começar com a faixa puxada por um avião sobre a praia de Malibu, em Los Angeles, anteontem? Receio que nenhum pai esteja disposto a fazer isso. '
união tudo
selecione 'Yao Ming: Não tratei Xangai como um projeto de investimento, mas fiquei feliz em fazer negócios como uma boa pessoa.',' "Yao Mi" disse: Yao Ming, que não tem escassez de efeitos publicitários, adquiriu o O Shanghai Oriental Basketball Club, que está à beira da extinção, o que mostra que ele realmente quer ganhar a vida para o ex. A equipe matriz faz alguma coisa. '
união tudo
selecione 'Os Rockets perderam para os Wizards para encerrar o recorde do ano', 'A combinação Yao-Mai estava em péssimo estado nesta campanha. Yao Ming marcou um rebote e um bloqueio em um chute, e McGrady marcou um rebote e uma assistência. um chute. Os dois se uniram para pegar o rebote. Jamieson fez duas assistências e dois bloqueios. '
Etapa 1: ativar a indexação de texto completo do banco de dados
sp_fulltext_database enable --Habilita a indexação de texto completo do banco de dados
ir
Etapa 2: crie um catálogo de texto completo
criar catálogo de texto completo tb_fulltext
no caminho N'D:Arquivos de ProgramasMicrosoft SQL Server2005MSSQL.1MSSQLFTData'
com acentuação_sensibilidade =on -- distinguir acentos
autorização dbo;--o proprietário do catálogo de texto completo
Etapa 3: criar um índice de texto completo
criar índice de texto completo em tb
(título, detalhe)
índice chave pk_id --Especifique a coluna do índice Para melhorar o desempenho, é melhor usar um índice clusterizado.
em tb_fulltext
with change_tracking auto – Atualiza automaticamente o índice de texto completo quando os dados são modificados na tabela associada.
Etapa 4: exemplo de consulta:
selecione * de tb
onde contém((título,detalhe),'Yao Ming')
Sintaxe da consulta:
1. Pesquise palavras específicas: contains(detail,'Yao Ming')
2. Pesquise uma frase específica: Use "" para colocar a frase entre aspas duplas, contém(detalhe,'Yao Ming Shanghai')
3. Pesquise palavras e frases em várias colunas: contains((title,detail),'Yao Ming Shanghai')
4. Pesquise palavras ou frases começando com o texto especificado: contains(detail,'"Yao Ming*"')
Se o texto e o asterisco não estiverem entre aspas duplas, a pesquisa de texto completo tratará o asterisco como um caractere. Se a pesquisa for por uma frase, cada palavra dentro da frase será considerada um prefixo. contains(detail,'"Yao Ming Shanghai*"') retornará os resultados onde a primeira palavra começa com Yao Ming e a segunda palavra começa com Shanghai
5. Pesquise variações de palavras específicas: contains(detail,'formsof(inflectional,ride)')
Retornará linhas contendo carona, passeios, cavalgada, montado na tabela
6. Pesquise palavras ou frases próximas a outra palavra ou frase: contém (detalhe, 'Yao Ming perto de Xangai')
7. Palavras ou frases que usam valores ponderados: contém(descrição,'isabout(peso de desempenho(0,8),peso confortável(0,4),peso suave(0,2))')
Peso atribui um valor de ponderação entre 0,0 e 1,0 para cada palavra ou frase.
8. Use várias condições de pesquisa: contains(detail,'"Yao Ming" ou "Shanghai"')
contém(detalhe,'"Yao Ming" e "Xangai"')
contém(detalhe,'"Yao Ming" e não "Xangai"')
9. Você também pode usar variáveis em contains
10. Pesquise sinônimos contains(title,'formsof(thesaurus,on)')
【teste】
No exemplo acima, execute
selecione * de tb
onde contém(título,'Xangai')
resultado:
detalhe do título do ID
6 Yao Ming: Ele não considerava Xangai um projeto de investimento. Ele estava feliz por ser um bom empresário e se tornou uma boa pessoa. "Yao Mi" disse: Yao Ming, que não tem falta de efeito publicitário, adquiriu o Shanghai Oriental. Clube de Basquete, que estava à beira da extinção, o que mostra que ele realmente quer fazer algo pelo seu ex-time.
Mas execute:
selecione * de tb
onde contém(título,'上')
O resultado é um conjunto vazio.
Motivo: Ao realizar uma consulta de índice de texto completo, "上" é uma palavra de interferência em chinês simplificado, ou seja, será ignorada durante a consulta, além disso, ao estabelecer um índice de texto completo, geralmente é usada uma frase como; um item de índice em vez de uma única palavra.
Se você quiser realizar esta consulta novamente e descobrir os resultados da primeira consulta, poderá modificar o dicionário de sinônimos do índice de texto completo.
O caminho onde existem as palavras de ruído e os arquivos de sinônimos:
D:Program FilesMicrosoft SQL Server2005MSSQL.1MSSQLFTData Cada nome de arquivo deve ser facilmente identificável.
Aqui está uma breve introdução sobre como modificar o dicionário de sinônimos:
1. Use o Bloco de notas para abrir tschs.xml, que é uma biblioteca de sinônimos para chinês simplificado
<XML ID="Tesauro de Pesquisa da Microsoft">
<!-- Comentado
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<expansão>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</expansão>
<substituição>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</substituição>
<expansão>
<sub>executar</sub>
<sub>correr</sub>
</expansão>
</thesaurus>
-->
</XML>
explicar:
<substituição>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</substituição>
é uma palavra substituta, ou seja, ao consultar o W2K, será automaticamente substituída pelo Windows 2000 para consulta.
<expansão>
<sub>executar</sub>
<sub>correr</sub>
</expansão>
É uma biblioteca de sinônimos, ou seja, ao consultar run, jog também será pesquisado.
Neste exemplo adicione:
<expansão>
<sub>Para cima</sub>
<sub>Xangai</sub>
</expansão>
2. Remova a linha de comentário começando no final:
<!-- Comentado
-->
3. O resultado final é:
<XML ID="Tesauro de Pesquisa da Microsoft">
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<expansão>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</expansão>
<substituição>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</substituição>
<expansão>
<sub>executar</sub>
<sub>correr</sub>
</expansão>
<expansão>
<sub>Para cima</sub>
<sub>Xangai</sub>
</expansão>
</thesaurus>
</XML>
3. Execute a instrução de consulta:
selecione * de tb
onde contém(título,'formsof(thesaurus,on)')
Você pode ver que os resultados da consulta são iguais a contains(title,'Shanghai')