首頁 後端開發 PHP問題 php怎麼實現站內搜索

php怎麼實現站內搜索

Sep 30, 2020 am 09:21 AM
php

php實作站內搜尋的方法:1.利用SQL的LIKE來實現站內搜尋;2、利用Google搜尋引擎API以及Google搜尋功能,建立站內搜尋;3、透過「PHP MYSQL SCWS」做站內搜尋引擎.

php怎麼實現站內搜索

推薦:《PHP影片教學

PHP MYSQL SCWS 做自己的站內搜尋引擎

天底下竟然有這麼一種站內搜尋引擎,它支援中文分詞,支援全文搜尋,無須任何擴充,不用對伺服器進行任何設定,只要支援PHP和MYSQL就行,他操作簡單,效率高,效果好.這就是PHP MYSQL SCWS 站內搜尋引擎.

事實上,無論大小,從新浪到愛卡汽車網,從日PV過億的網站到我自己的個人博客,都需要站內搜尋引擎.站內搜尋引擎對於網站的作用,是不言而喻的.最直接的作用是讓用戶以最直接的方式,最快的速度在你的網站裡找到他想要的東西.而不是再到百度谷歌去,搜尋到別人的網站.

(一) 最基本的站內搜素利用SQL的LIKE

#例如

SELECT * FROM bbs_threads WHERE subject LIKE '%搜索引擎%' LIMIT 10
登入後複製

優點:太容易了,是人都會

缺點: 1. 每次執行LIKE語句都需要一次表遍歷,用的是字符串比較,效率太低. 2. 不能分詞,只能整句話搜尋.如果搜尋詞較長,幾乎搜尋不出任何結果.如果加上分詞功能,相當於一條語句裡使用好幾個LIKE,同1.

(二) 谷歌自訂搜尋

利用Google搜尋引擎API以及Google強大的搜尋功能,建立自己的站內搜尋.演示: http://www.lusongsong.com/search.html?cx=014724041144905348996:pf5fnahnzuw&cof=FORID:11&ie=UTF-8&q=危機&sa =搜尋&siteurl=lusongsong.com/

優點: 省心,沒有比這個再省心的了.你啥都不用管.谷歌都是自家的了,人家的搜尋演算法,那怎麼是咱們能比得了的呢.

缺點: 1.需要使用IFRAME,或者直接打開谷歌的頁面,或者用更複雜的API來實現. 2.只能按照文本搜索,只能全站搜索.我要想在某個頻道下,搜尋指定類型的文章等要求谷歌就不能實現了.一句話,就是不能自定義. 3.如果你的網站小,谷歌人家都不帶收錄你,啥也搜不出來你咋辦?

(三) lucene 全世界最好的開放原始碼搜尋引擎

呃…沒啥好介紹的,直接看優缺點吧

#優點: 完全開放原始碼,完全可以自訂,完全…..

缺點: java寫的,哥不會.你會java?你改個試試

(四) PHP MYSQL SCWS 做自己的站內搜尋引擎

千呼萬喚始出來!

MySQL支援全文索引和搜尋。全文索引在 MySQL 中是一個 FULLTEXT 類型索引。 FULLTEXT 索引用於 MyISAM 表,可以在 CREATE TABLE 時或之後使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上建立。

函數 MATCH() 對照一個文字集(包含在一個 FULLTEXT 索引中的一個或多個列的列集)執行一個自然語言搜尋一個字串。搜尋字串做為 AGAINST() 的參數被給定。搜尋以忽略字母大小寫的方式執行。對於表格中的每個記錄行,MATCH() 會傳回相關性值。即,在搜尋字串與記錄行在 MATCH() 清單中指定的列的文字之間的相似性尺度。

當 MATCH() 被使用在一個 WHERE 子句中時,傳回的記錄行會自動地以相關性從高到低的順序排序。相關性值是非負的浮點數。零相關性意味著不相似。

在英語環境下,使用PHP和MYSQL就完全能夠建立全文檢索環境.步驟為:

#1. 建立內容表,灌入資料,在需要全文檢索的欄位上建立FULLTEXT索引

2. 利用MATCH函數執行搜尋條件

3. 處理傳回的資料,顯示結果

簡單吧。 。 。

問題是,中文不是自分詞的語言,在MYSQL開來一大段中文就是一個單字,全文檢索就失效了.解決這個問題的辦法是,在灌入資料和搜尋前,利用其他的工具來進行分詞,將大段的中文分隔為一個一個的詞,類似與英文的單字.

最簡單的工具就是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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

See all articles