ホームページ  >  記事  >  バックエンド開発  >  PHPでサイト検索を実装する方法

PHPでサイト検索を実装する方法

藏色散人
藏色散人オリジナル
2020-09-30 09:21:334028ブラウズ

php でサイト内検索を実装する方法: 1. SQL LIKE を使用してサイト内検索を実装する; 2. Google 検索エンジン API と Google 検索機能を使用してサイト内検索を確立する; 3. 「PHP」を使用するMYSQL SCWS」は、サイト内検索を行うための検索エンジンです。

PHPでサイト検索を実装する方法

推奨: 「PHP ビデオ チュートリアル

PHP MYSQL SCWS 独自のオンサイト検索を作成するEngine

このようなオンサイト検索エンジンがあります。中国語の単語分割と全文検索をサポートしています。拡張機能やサーバーの設定は必要ありません。PHP をサポートするだけで済みます。 MYSQL と MYSQL を使用しています。操作が簡単で、効率が高く、効果が優れています。これは PHP MYSQL SCWS オンサイト検索エンジンです。

実際、新浪から愛華自動車網まで、規模の大小を問わず、 1 日あたり 1 億 PV を超える Web サイトから個人ブログまで、オンサイト検索エンジンが必要です。Web サイト上でのオンサイト検索エンジンの役割は自明です。最も直接的な役割は、ユーザーが最も直接的な方法で、できるだけ早くあなたの Web サイトでユーザーが欲しいものを見つけるためです。また、Baidu や Google にアクセスする代わりに、他の人の Web サイトを検索します。

(1) 最も基本的なサイト内検索SQL の LIKE

を使用します。たとえば、

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

長所: 簡単すぎます。はい、誰もが知っています。

短所: 1. LIKE ステートメントが実行されるたびに、テーブルのトラバーサルが必要です。 2. 単語分割ができず、全文しか検索できない場合 検索語句が長く、ほとんど検索結果が見つからない場合 単語分割機能を追加した場合1.

(2) Google カスタム検索

Google 検索エンジン API と Google の強力な検索機能を使用して、独自の検索機能を構築します。 - サイト検索デモ: http://www.lusongsong.com/search.html?cx=014724041144905348996:pf5fnahnzuw&cof=FORID:11&ie=UTF-8&q=crisis&sa =Search&siteurl=lusongsong.com/

利点:安心、これほど安心できることはありません。何も心配する必要はありません。Google は独自の検索アルゴリズムを所有しています。それがどうして当社のものになるのでしょうか。比較することができます。

デメリット: 1. それを実現するには、IFRAME を使用するか、Google ページを直接開くか、より複雑な API を使用する必要があります。 2. テキストに従ってのみ検索でき、サイト全体のみを検索できます。 3. あなたのウェブサイトが小さい場合、Google はあなたを含めず、何も検索することができません。

(3) Lucene は世界で最高のオープンソース検索エンジンです

えー...紹介するものは何もありません。長所と短所だけ見てください

利点: 完全にオープン ソース コード、完全にカスタマイズ可能、完全に...

欠点: Java で書かれていますが、方法がわかりません。Java を知っていますか? 別のものを試してみてください

(4) PHP MYSQL SCWS 独自のオンサイト検索エンジンを作成する

長い間待っていました!

MySQL は全文インデックス作成と検索をサポートしています。 MySQL のフルテキスト インデックスは FULLTEXT 型のインデックスです。 FULLTEXT インデックスは MyISAM テーブルで使用され、CREATE TABLE の実行時、または ALTER TABLE または CREATE INDEX の使用後に CHAR、VARCHAR、または TEXT カラムに作成できます。

Function MATCH() テキスト セット (FULLTEXT インデックス内の 1 つ以上の列を含む列セット) に対して文字列の自然言語検索を実行します。検索文字列は AGAINST() の引数として与えられます。検索は、大文字と小文字を区別せずに実行されます。テーブル内のレコード行ごとに、MATCH() は相関値を返します。つまり、検索文字列と MATCH() リストで指定された列のレコード行のテキストとの間の類似性の尺度です。

MATCH() が WHERE 句で使用されると、返された行は関連性の高いものから低いものの順に自動的に並べ替えられます。相関値は非負の浮動小数点数です。相関関係がゼロとは、類似性がないことを意味します。

英語環境では、PHP と MYSQL を使用して全文検索環境を構築することが完全に可能です。手順は次のとおりです:

1. コンテンツ テーブルを作成し、データを入力し、全文検索が必要なフィールドに全文検索環境を作成します FULLTEXT インデックス

2. MATCH 関数を使用して検索条件を実行します

3. 返されたデータを処理し、結果を表示します

#シンプル。 。 。

問題は、中国語が自己分割言語ではないことです。MYSQL では、中国語の大部分は 1 つの単語にすぎず、全文検索は無効になります。この問題を解決する方法は、次のとおりです。他のツールは、英語の単語と同様に、中国語の大きなセクションを 1 つずつ単語に分割する単語分割に使用されます。

最も単純なツールは SCWS です。公式サイト: http://www.ftphp.com /scws /

SCWS は、Simple Chinese Words Segmentation の略語で、単純な中国語の単語分割システムです。

これは、単語頻度辞書に基づいた機械的な中国語単語分割エンジンであり、基本的に中国語の段落全体を正確に単語に分割できます。単語は中国語の基本的な形態素単位であり、英語とは異なり、文章を書くときは単語がスペースで区切られるため、単語を正確かつ迅速に分割する方法は、中国語の単語分割において常に難しい問題でした。

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

以上がPHPでサイト検索を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。