本文目錄一覽:
php中如何使用sphinx搜索引擎
一. 安裝、配置
1.ubuntu安裝sphinx
如果沒有安裝aptitude ,需要先安裝 aptitude
2.配置
3.執行命令分詞,會在/var/lib/sphinxsearch/data/test1 目錄下生成一堆索引文件
sudo indexer -c /etc/sphinxsearch/sphinx.conf test1
test1為上述配置文件的index名字
4.命令行測試搜索
sudo search -c /etc/sphinxsearch/sphinx.conf google
二.在php中使用,安裝php、sphinx的依賴庫
安裝 aptitudeapt-get install aptitude
sudo aptitude install libsphinxclient-dev libsphinxclient-0.0.1 -y
2.安裝php sphinx的擴展
安裝 pecl
sudo apt-get install php-pear php5-dev
在安裝sphinx
sudo pecl install sphinx
3.在配置文件php.ini中添加sphinx的擴展,
我的php.ini文件為
sudo vim /etc/php5/fpm/php.ini
獲取自己的php.ini文件位置使用
php5-fpm -i|grep ini
添加:
extension=sphinx.so
4.重啟php5-fpm,查看php是否加載sphinx模塊
sudo /etc/init.d/php5-fpm restart
5.將search程序運行在後台
sudo searchd -c /etc/sphinxsearch/sphinx.conf
默認監聽配置文件中的端口:9312
6.在thinkphp中調用搜索
搜索完畢,返回結果(默認返回20條,修改返回條數用添加 $s-SetLimits(0, 1000, 1000);),搜索速度相當快,索引80w條數據的title和description兩個字段耗時不到10s,該搜索引擎支持增量索引,多種模式的搜索,網上的資料也非常多
擁有自己的搜索引擎
雖然現在已經很少人使用PC電腦去找資料了,但有時候還是不可避免要用到,當你搜索資料時你會發現現在的搜索引擎首先出現的是一大堆的廣告,是不是很煩。
現在就讓我們來安裝一個屬於自己的搜索引擎,不用買域名、不用買服務器只需要你有一台PC電腦就可以了。
首先下載一個phpStudy2018.exe軟件(比較新的是這個phpStudy-x64-8.1.1.2.exe),用這個軟件來搭建一個運行PHP的服務器平台。然後再下載一個開源的PhpSou搜索引擎(整合Sphinx) V3.1或其它你自己覺得合適的源碼。
安裝好phpStudy後,同時把PhpSou搜索引擎源碼複製到phpStudyPHPTutorialWWW,然後點擊 其它選項菜單-站點域名管理,網站域名填入127.0.0.1(這個ip地址就是我們等會打開搜索引擎要用到的)。網站目錄E:phpStudyPHPTutorialWWW(這個www是放你搜索引擎源碼的文件夾)
設置好後點擊新增-保存設置並生成配置文件,接下來就是運行配置搜索引擎了。點擊 其它選項菜單-My homePage(也可以在遊覽器地址欄直接輸入剛才設置的ip地址127.0.0.1)如果是第一次運行,按軟件要求設置數據庫名稱、密碼什麼的就可以了,然後進入PhpSou後台管理,按自己需要填好網站的基本設置.
這時數據庫是空的(有些源碼可能會帶有一些數據)我們要在常規數據管理這裡的網站管理、網址管理、網頁管理這三項都添加一些網址進去,然後點擊 網絡爬蟲管理-抓取網站-開啟網絡爬蟲或點擊 網絡爬蟲管理-抓取網頁doang-開啟網絡爬蟲
然後就會自動的不停的去抓取網址或者網頁了。
是不是很清爽,沒有了煩人的廣告,是不是很厲害。
其實說得這麼厲害,可惜對個人來說還是自娛自樂的性質。
如何用PHP製作搜索引擎
這樣看你做什麼樣的搜索,如果要做全站搜索的話,只用數據庫搜索做起來會比較困難,會遇到要檢索的數據存在不同的表中,甚至不同的庫中,如果是全站搜索的話,建議用sphinx或者lucener,如果只是某個表內容搜索的話,sql:select * from 表名 where 列名 like ‘%值%’ ;然後循環 mysql_fetch_array() 或 mysql_fetch_assoc() 或 mysql_fetch_object() 或 mysql_fetch_row()都取一行記錄,把記錄循環出來就可以了。
怎麼在網頁上用PHP做個搜索功能?
通過from表單,將查詢的關鍵詞,通過 like 跟數據進行模糊查詢對比\x0d\x0a從topics表中查詢字段subject與傳進來的參數’$_POST[‘topic’]進行比較模糊查詢\x0d\x0a設subject字段數據為:數學,英語,物理,化學,英文\x0d\x0a$subject=$_POST[‘topic’]; \x0d\x0a$sql = “select * from topics where subject like ‘%” .$subject. “%'”;\x0d\x0a$result = mysql_query($sql);\x0d\x0a若從表單提交的『topic』值為「學」,得到的結果將是:數學,化學\x0d\x0a多個字段匹配查詢:\x0d\x0a$sql = “select id,subject from topics where (id like ‘%” .$id. “%’) or (name like ‘%” .$name. “%’) or (subject like ‘%” .$subject. “%’) order by id desc”;\x0d\x0a結果依據字段id的順序
原創文章,作者:XYBJ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/147695.html