首頁  >  文章  >  後端開發  >  PHP實作中文全文搜尋的原理介紹

PHP實作中文全文搜尋的原理介紹

藏色散人
藏色散人轉載
2019-04-26 10:48:025451瀏覽

一般的開發中的相關文章或內容都是透過關鍵字標籤、標題來實現相關搜尋的,但這樣是搜尋基本上會使用低效的like語句,由於效率低下在稍微大一點的專案開發中我們無法進行文章或相關內容的詳情欄位搜尋(伺服器壓力過大、效率極低)。

常見的解決方案

1、sphinx coreseek

優點: 技術成熟、穩定

缺點: sphinx 不支援中文coressk 目前已經停止維護【如果是純英文環境sphinx 極佳】

2、迅搜(Xunsearch)

##優點: 技術成熟、穩定

#缺點: 安裝過程複雜,配置不夠靈活

3、mysql 全文搜尋

有點:安裝方便、效率高

缺點:對中文支援不夠好

來自hcoder的解決方案(分詞自主配置)

優點: 安裝簡單(php 元件)、底層由開發者自行編寫更清晰底層、更容易的最佳化

缺點: 需要開發者有php mysql 基礎,需要自己寫整個過程的程式碼

#原則

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

使用到的第三方元件(scws)

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

SCWS 是Simple Chinese Word Segmentation 的縮寫(即:簡易中文分詞系統)。

這是一套以詞頻字典為基礎的機械式中文分詞引擎,它能將一整段的中文文字基本上正確地切分成字。詞是中文的最小語素單位,但在書寫時並不像英語會在詞之間用空格分開, 所以如何準確并快速分詞一直是中文分詞的攻關難點。

SCWS 採用純 C 語言開發,不依賴任何外部庫函數,可直接使用動態連結庫嵌入應用程序, 支援的中文編碼包括 GBK、UTF-8 等。另外也提供了 PHP 擴充模組, 可在 PHP 中快速且方便地使用分詞功能。

分詞演算法上並無太多創新成分,採用的是自己採集的詞頻詞典,並輔以一定的專有名稱,人名,地名, 數字年代等規則識別來達到基本分詞,經小範圍測試準確率在90% ~ 95% 之間, 基本上能滿足一些小型搜尋引擎、關鍵字提取等場合運用。首次雛形版本發佈於 2005 年底。

SCWS 由 hightman 開發, 並以 BSD 授權協議開源發布,原始碼託管在 github。

以上是PHP實作中文全文搜尋的原理介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:hcoder.net。如有侵權,請聯絡admin@php.cn刪除