Maison  >  Article  >  développement back-end  >  Comment implémenter la recherche de site en php

Comment implémenter la recherche de site en php

藏色散人
藏色散人original
2020-09-30 09:21:334028parcourir

Comment implémenter la recherche sur site en PHP : 1. Utilisez SQL LIKE pour implémenter la recherche sur site ; 2. Utilisez l'API du moteur de recherche Google et la fonction de recherche Google pour établir la recherche sur site ; PHP+MYSQL+SCWS" Créez un moteur de recherche sur site.

Comment implémenter la recherche de site en php

Recommandé : "Tutoriel vidéo PHP"

PHP+MYSQL+SCWS Faites votre propre recherche sur le site Moteur

Il existe un tel moteur de recherche sur site dans le monde. Il prend en charge la segmentation des mots chinois et la recherche en texte intégral. Il ne nécessite aucune extension ni aucun paramètre sur le serveur. pour prendre en charge PHP et MYSQL. Il fonctionne Simple, efficace et efficient C'est le moteur de recherche sur site PHP+MYSQL+SCWS

En fait, peu importe sa taille, de Sina à Aika Automotive. Réseau, des sites Web avec plus de 100 millions de PV quotidiens à mes propres blogs personnels, tous ont besoin de moteurs de recherche sur site. Le rôle des moteurs de recherche sur site est évident. Le rôle le plus direct est de permettre aux utilisateurs de trouver quoi. ils veulent accéder à votre site Web de la manière la plus directe et la plus rapide possible au lieu d'aller sur Baidu et Google pour rechercher les sites Web d'autres personnes

(1) La recherche sur site la plus basique utilise LIKE

tel que

SELECT * FROM bbs_threads WHERE subject LIKE '%搜索引擎%' LIMIT 10

Avantages : C'est trop facile, tout le monde peut le faire

Inconvénients : 1. Chaque fois que l'instruction LIKE est exécutée, un parcours de table est requis et une chaîne la comparaison est utilisée, ce qui est trop inefficace. 2. Elle ne peut pas être divisée en mots, seulement la phrase entière Recherche de mots Si le terme de recherche est long, presque aucun résultat ne sera trouvé. Si la fonction de segmentation de mots est ajoutée, elle est équivalente. à utiliser plusieurs LIKE dans une phrase, comme 1.

(2) Recherche personnalisée Google

Utilisez l'API du moteur de recherche Google et la puissante fonction de recherche de Google pour créer votre propre recherche sur site. Démo : http://www.lusongsong.com/search.html?cx=014724041144905348996:pf5fnahnzuw&cof=FORID:11&ie=UTF- 8&q=crisis&sa=search&siteurl=lusongsong.com/

Avantages : Sans souci, il n'y a rien de plus sans souci que cela. Vous n'avez à vous soucier de rien. Google possède son propre algorithme de recherche, alors comment pouvons-nous comparer ?

Inconvénients : 1. Vous devez utiliser IFRAME, ou ouvrez directement la page Google ou utilisez une API plus complexe pour y parvenir 2. Vous ne pouvez effectuer une recherche que par texte et vous ne pouvez effectuer une recherche que par texte sur l'ensemble du site. certain canal, Google ne peut pas le mettre en œuvre. En un mot, il ne peut pas être personnalisé. 3. Si votre site Web est petit, Google ne vous inclura pas. Que devez-vous faire si vous ne trouvez rien ?

( 3) Lucene est le meilleur moteur de recherche open source au monde

Euh... il n'y a rien à présenter, regardons juste les avantages et les inconvénients

Avantages : Code totalement open source, complètement personnalisable, entièrement...

Inconvénients : je ne peux pas l'écrire en java. Connaissez-vous Java ? Essayez-en un autre

(4) PHP+MYSQL+SCWS Créez le vôtre sur-. moteur de recherche de site

Il attend depuis longtemps !

MySQL prend en charge l'indexation et la recherche en texte intégral. L'index de texte intégral dans MySQL est un index de type FULLTEXT. Les index FULLTEXT sont utilisés sur les tables MyISAM et peuvent être créés sur les colonnes CHAR, VARCHAR ou TEXT au moment de CREATE TABLE ou après avoir utilisé ALTER TABLE ou CREATE INDEX.

La fonction MATCH() effectue une recherche en langage naturel d'une chaîne par rapport à un ensemble de texte (un ensemble de colonnes contenant une ou plusieurs colonnes dans un index FULLTEXT). La chaîne de recherche est donnée en argument à AGAINST(). La recherche est effectuée en ignorant la casse des lettres. Pour chaque ligne d'enregistrement de la table, MATCH() renvoie une valeur de corrélation. C'est-à-dire la mesure de similarité entre la chaîne de recherche et le texte de la ligne d'enregistrement dans la colonne spécifiée dans la liste MATCH().

Lorsque MATCH() est utilisé dans une clause WHERE, les lignes renvoyées sont automatiquement triées de la pertinence la plus élevée à la plus faible. Les valeurs de corrélation sont des nombres à virgule flottante non négatifs. Une corrélation nulle signifie aucune similitude.

Dans un environnement anglais, il est tout à fait possible d'établir un environnement de recherche en texte intégral en utilisant PHP et MYSQL. Les étapes sont :

1. Créer une table de contenu, remplir les données, et créez un environnement de recherche en texte intégral sur les champs qui nécessitent une recherche en texte intégral

2 Utilisez la fonction MATCH pour exécuter les conditions de recherche

3. afficher les résultats

Simple. . .

Le problème est que le chinois n'est pas une langue auto-segmentée. Dans MYSQL, une grande partie du chinois ne contient qu'un seul mot et la recherche en texte intégral sera inefficace. D'autres outils sont utilisés pour la segmentation des mots afin de séparer de grandes sections de chinois en mots un par un, similaires aux mots anglais

L'outil le plus simple est le site officiel SCWS : http://www.ftphp.com /scws. /

SCWS est l'abréviation de Simple Chinese Words Segmentation, qui est un système simple de segmentation de mots chinois.

Il s'agit d'un moteur mécanique de segmentation de mots chinois basé sur un dictionnaire de fréquence de mots, qui peut fondamentalement segmenter correctement un paragraphe entier de caractères chinois en mots. Les mots sont les unités morphémiques de base du chinois. Lors de l'écriture, contrairement à l'anglais, les mots sont séparés par des espaces. Par conséquent, la segmentation précise et rapide des mots a toujours été un problème difficile dans la segmentation des mots chinois.

SCWS 在概念上并无创新成分,采用的是自行采集的词频词典,并辅以一定程度上的专有名称、人名、地名、数字年代等规则集,经小范围测试大概准确率在 90% ~ 95% 之间,已能基本满足一些中小型搜索引擎、关键字提取等场合运用。 SCWS 采用纯 C 代码开发,以 Unix-Like OS 为主要平台环境,提供共享函数库,方便植入各种现有软件系统。此外它支持 GBK,UTF-8,BIG5 等汉字编码,切词效率高。

SCWS提供了纯PHP代码编写的中文分词类,使它不需要做任何额外的扩展就能在机会所有的服务器上使用.

支持中文的基于PHP+MYSQL的全文检索的步骤为:

1. 建立内容表(,将数据分词),灌入数据,在需要全文检索的字段上建立FULLTEXT索引

2. (将要搜索的内容先分词再) 利用MATCH函数执行搜索条件

3. 处理返回的数据,显示结果

仍然是SO EASY!

一个演示的例子: http://www.bnet.com.cn/files/search.php?word=%CA%D5%B9%BA&page=3

执行搜索的语句是:

SELECT SQL_CALC_FOUND_ROWS *, MATCH (titlewords, keywords, author, contentwords) AGAINST ('$words') AS matchscore
FROM search
WHERE MATCH (titlewords, keywords, author, contentwords) AGAINST ('$words') > 0.5

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn