ホームページ  >  記事  >  バックエンド開発  >  PHP での中国語全文検索の実装原理の紹介

PHP での中国語全文検索の実装原理の紹介

藏色散人
藏色散人転載
2019-04-26 10:48:025427ブラウズ

一般的な開発ではキーワードタグやタイトルなどで関連する記事やコンテンツを検索しますが、基本的に非効率なlike文を使用した検索となりますので、効率が悪いため、少し大きなプロジェクトの開発では記事やコンテンツの詳細なフィールド検索ができません。関連コンテンツ (サーバーに過大な負荷がかかり、効率が非常に低くなります)。

一般的なソリューション

1. sphinx coreseek

利点: 成熟した安定したテクノロジー

欠点: sphinx は中国語の coressk をサポートしていません。は現在メンテナンスを停止しています [純粋な英語環境なら sphinx が優れています]

2. Xunsearch(Xunsearch)

利点: 成熟した安定した技術

欠点: インストールプロセスが複雑で、構成が十分に柔軟ではない

3. Mysql 全文検索

利点: 簡単なインストールと高い効率

短所: はい、中国語のサポートは十分ではありません

hcoder による解決策 (自己構成の単語分割)

長所: 簡単なインストール (php コンポーネント)、最下層は記述されています開発者自身による より明確な最下層、より簡単な最適化

欠点: 開発者は PHP mysql 基盤を持っている必要があり、プロセス全体のコードを自分で記述する必要があります

原則

1、获取词语环节
文章数据表 -> 逐行读取文章信息 -> 组合所有文字内容 -> 分词、去重 -> 记录到新的数据表
2、搜索环节
搜索关键字记录表 -> 合并文章数据 -> 去重 -> 展示数据

サードパーティが使用したコンポーネント (scws)

http://www.xunsearch.com/scws/

SCWS は、Simple Chinese Word Segmentation (つまり、Simple Chinese Word Segmentation System) の頭字語です。

これは、単語頻度辞書に基づいた機械的な中国語単語分割エンジンであり、基本的に中国語テキストの段落全体を単語に正しく分割できます。 Word は中国語の最小の形態素単位ですが、英語のように単語をスペースで区切らずに表記するため、中国語の単語分割ではいかに正確かつ迅速に単語を分割するかが常に難しい問題でした。

SCWS は純粋な C 言語で開発されており、外部ライブラリ関数に依存しません。ダイナミック リンク ライブラリを直接使用してアプリケーションを埋め込むことができます。サポートされている中国語エンコーディングには、GBK、UTF-8 などが含まれます。さらに、PHP の単語分割機能を迅速かつ簡単に使用できるように、PHP 拡張モジュールが提供されています。

単語分割アルゴリズムには革新的な要素はあまりありませんが、独自に収集した単語頻度辞書を使用し、特定の固有名、人名、地名、デジタル時代、その他のルール認識を補完して、基本的な認識を実現します。範囲テストの精度は 90% ~ 95% であり、基本的に一部の小規模な検索エンジン、キーワード抽出などのニーズを満たすことができます。最初のプロトタイプ バージョンは 2005 年末にリリースされました。

SCWS は hightman によって開発され、BSD ライセンスの下でオープン ソースとしてリリースされ、ソース コードは github でホストされています。

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

声明:
この記事はhcoder.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。