Maison >développement back-end >Problème PHP >Principe de la fonction de recherche PHP
Principe de la fonction de recherche PHP
L'idée de la fonction de recherche PHP (segmentation de mots + correspondance)
1. La recherche la plus simple (en utilisant la correspondance d'instructions similaires)
Cette recherche ne peut être utilisée que pour la recherche d'un seul mot
Par exemple : recherche de pseudo d'utilisateur, recherche de nom de groupe, etc.
Recommandé : "Tutoriel PHP"
Recherche réelle (segmentation de mots + correspondance)
Cette méthode peut être utilisée pour rechercher des segments de données, tels que la récupération des titres du contenu des articles, etc.
Principe :
Utiliser le correspondance de recherche en texte intégral dans Mysql
Étapes de mise en œuvre
1. Le type de table doit être MyISAM (Innodb peut également être utilisé après MySQL5.6)
Le type de champ pour établir la recherche en texte intégral doit être char, varchar, text
2. Établissez la configuration avancée de la recherche en texte intégral (configurez MySQL)Puisque la configuration par défaut de Mysql est que la longueur des mots indexés est de 4, donc si vous souhaitez prendre en charge les mots chinois, vous doit d'abord changer cela.
*Les utilisateurs Unix doivent modifier my.cnf Généralement, ce fichier se trouve dans /etc/my.cnf, s'il n'est pas trouvé, recherchez d'abord find / -name 'my.cnf'<.>
Ajouter à la position [mysqld] :ft_min_word_len = 2Les autres attributs sont ft_wordlist_charset = gbkft_wordlist_file = /home/soft/mysql/share/mysql /wordlist-gbk.txtft_stopword_file = /home/soft/mysql/share/mysql/ stopwords-gbk.txtUne petite explication :ft_wordlist_charset représente le personnage ensemble du dictionnaire. Actuellement, ceux qui sont bien pris en charge sont (UTF-8, gbk, gb2312, big5) ft_wordlist_file est un fichier de liste de mots. Chaque ligne comprend un mot et sa fréquence de mots (séparés par un. nombre de tabulations ou d'espaces, spécifiquement pour l'élimination) ft_stopword_file signifie filtrer les listes de mots qui ne sont pas indexées, une par ligne.
ft_min_word_len est la longueur minimale des mots ajoutés à l'index. la valeur par défaut est 4. Afin de prendre en charge les caractères chinois, il est remplacé par 2
3 Créez une recherche en texte intégral (ajoutez un index au tableau)
. Utilisez le mot-clé FullText pour identifier les champs lors de la création d'une table et utilisez ALTER TABLE (ou CREATE INDEX) pour créer un index pour une table existante
CREATE fulltext INDEX index_name ON table_name(colum_name);
4 Utiliser la recherche en texte intégral (instruction SQL)
Utilisez la fonction MATCH dans la clause WHERE de SELECT
Syntaxe globale : MATCH(col1,col2,…) AGAINST (expr[search_modifier]). Le contenu dans MATCH est la colonne dans laquelle l'index FULLTEXT a été établi et les données doivent être trouvées. L'expr dans AGAINST est le contenu du texte à trouver, etsearch_modifier est facultatif. Les valeurs possibles de
search_modifier sont :
IN NATURAL LANGUAGEMODE、IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION、IN BOOLEAN MODE、WITH QUERY EXPANSION。
Chaque valeur de search_modifier représente un type de recherche en texte intégral, qui sont la recherche en texte intégral en langage naturel, la recherche en texte intégral en langage naturel avec extension de requête, recherche booléenne en texte intégral, recherche en texte intégral étendue par requête (EN MODE LANGAGE NATUREL est utilisé par défaut).
SELECT * FROM articles WHERE MATCH (tags) AGAINST ('旅游' IN BOOLEAN MODE);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!