ti-enxame.com

O que é um índice de texto completo e quando devo usá-lo?

Como o título indica, o que é um índice de texto completo e quando devo usá-lo?

36
cdxf

Nos bancos de dados, os índices geralmente são usados ​​para aprimorar o desempenho ao procurar algo definido na sua cláusula where. No entanto, quando se trata de filtrar algum texto, por exemplo, usando algo como WHERE TextColumn LIKE '%searchstring%', as pesquisas são lentas, porque a maneira como os índices regulares de banco de dados funcionam são otimizados para correspondências contra o 'conteúdo inteiro' de uma coluna e não apenas uma parte dela. Especificamente, a pesquisa LIKE, que inclui caracteres curinga, não pode usar nenhum tipo de índice.

Como mencionado no comentário abaixo, o MySQL precisa da sintaxe MATCH () ... AGAINST para pesquisar em um índice de texto completo; BTW, isso varia dependendo do fornecedor do banco de dados. No MS SQL, você pode usar CONTAINS, lembre-se disso quando planejar oferecer suporte a outros bancos de dados também.

Os índices de texto completo funcionam melhor para texto comum, porque são otimizados para esse tipo de coluna. Muito simplificado: eles dividem o texto em palavras e fazem um índice sobre as palavras e não o texto inteiro. Isso funciona muito mais rápido para pesquisas de texto ao procurar palavras específicas.

29
Alex

Um índice de texto completo é um índice aplicado em um banco de dados MySQL a campos de texto nos quais você planeja executar uma pesquisa de texto completo. Uma pesquisa de texto completo usa a sintaxe match(field) against('text'). Se você deseja executar uma pesquisa de texto completo, deve ter um índice de texto completo nas colunas nas quais estará executando.

Existem três tipos de pesquisas de texto completo. Vou citar o manual, porque acho melhor:

  • Uma pesquisa booleana interpreta a sequência de pesquisa usando as regras de uma linguagem de consulta especial. A sequência contém as palavras a serem pesquisadas. Também pode conter operadores que especificam requisitos, para que um Word deva estar presente ou ausente nas linhas correspondentes ou que seja ponderado mais alto ou mais baixo que o normal. Palavras comuns como "some" ou "then" são palavras irrelevantes e não coincidem se presentes na string de pesquisa. O modificador IN BOOLEAN MODE especifica uma pesquisa booleana. Para obter mais informações, consulte a Seção 11.9.2, “Pesquisas de texto completo booleanas”.

  • Uma pesquisa em linguagem natural interpreta a sequência de pesquisa como uma frase na linguagem humana natural (uma frase em texto livre). Não há operadores especiais. A lista de palavras irrelevantes se aplica. Além disso, as palavras presentes em 50% ou mais das linhas são consideradas comuns e não coincidem. Pesquisas de texto completo são pesquisas de idioma natural se nenhum modificador for fornecido.

  • Uma pesquisa de expansão de consulta é uma modificação de uma pesquisa de idioma natural. A sequência de pesquisa é usada para executar uma pesquisa no idioma natural. Em seguida, as palavras das linhas mais relevantes retornadas pela pesquisa são adicionadas à string de pesquisa e a pesquisa é feita novamente. A consulta retorna as linhas da segunda pesquisa. O modificador WITH QUERY EXPANSION especifica uma pesquisa de expansão de consulta. Para obter mais informações, consulte a Seção 11.9.3, “Pesquisas de texto completo com expansão de consulta”.

Para obter mais informações, dê uma olhada na Página de referência de pesquisa de texto completo .

13
Daniel Bingham