Skip to content

Projeto desenvolvido para fins de estudo feito com PHP e MySQL utilizando os recursos de pesquisa LIKE e FULL-TEXT 🔎❤

Notifications You must be signed in to change notification settings

julianapetrelli/like-e-full-text-search

Repository files navigation

SEARCH LIKE AND FULL TEXT

Utilizando o operador Like

O operador LIKE é usado em uma cláusula WHERE para pesquisar por um padrão especificado em uma coluna.

$conn = require __DIR__.'/utils/connection.php';

$term = $argv[1] ?? null;
$term = '%'.$term.'%';

**$stmt = $conn->prepare('SELECT * FROM posts WHERE body LIKE ?;');
$stmt->bind_param('s', $term);
$stmt->execute();**

$result = $stmt->get_result();
$posts = $result->fetch_all(MYSQLI_ASSOC);

foreach ($posts as $post) {
    echo $post['title']. PHP_EOL;
    echo $post['body']. PHP_EOL;
    echo PHP_EOL;
}

Uso da % exemplo:

fulltext

Nos queremos selecionar as pessoas que vivem em uma cidade que começa com 'S':

   1:SELECT * FROM Pessoas
   2:WHERE cidade LIKE 'S%'

O símbolo % pode ser usado para definir um padrão (letras faltando no padrão) tanto antes como depois do padrão. O resultado da pesquisa acima será:

fulltext

Agora nós queremos selecionar as pessoas que vivem em uma cidade cujo nome termina com 'S':

   1:SELECT * FROM Pessoas
   2:WHERE cidade LIKE '%s'

O resultado para esta pesquisa será:

fulltext

Utilizando o operador full-text

Para efetuar a pesquisa através de um índice fulltext utilizamos as funções MATCH e AGAINST, que recebem o nome dos campos e o valor a ser pesquisado, respectivamente. Veja o exemplo:

$stmt = $conn->prepare('SELECT *, MATCH(title, body) AGAINST(? IN BOOLEAN MODE) as score FROM posts ORDER BY score DESC ;');
$stmt->bind_param('s', $term);
$stmt->execute();

MATCH: Uma construção especial usada para realizar uma pesquisa de texto completo em um índice de texto completo. Quando match() é usado em uma cláusula, como no exemplo mostrado anteriormente, as linhas devolvidas são automaticamente classificadas com a maior relevância primeiro. Valores de relevância são números de pontos flutuantes não negativos. Nenhuma relevância significa nenhuma semelhança. A relevância é calculada com base no número de palavras na linha (documento), no número de palavras únicas na linha, no número total de palavras na coleção e no número de linhas que contêm uma palavra específica.

Conteúdo da pesquisa:

INSERT INTO posts (title, body) VALUES
    ("Laravel framework", "O laravel é muito utilizado hoje em dia"),
    ("CakePHP", "Framework de desenvolvimento rápido"),
    ("Slim Framework", "Micro framework, podemos utilizar o Eloquent do laravel nele")
    
fulltext like

About

Projeto desenvolvido para fins de estudo feito com PHP e MySQL utilizando os recursos de pesquisa LIKE e FULL-TEXT 🔎❤

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages