迅搜,十分鍾搭建一個搜索引擎


假設有一堆詞,也有一堆內容。現在想知道:

每個詞的相關詞有哪些?
每個詞的相關內容有哪些?
每個內容的相關內容有哪些?
利用上述詞與詞、詞與內容、內容與內容的關聯,來優化頁面的推薦信息,使用戶和搜索引擎獲得更好的瀏覽體驗。

這些相關信息的推薦都可以通過搜索來實現,這些推薦的信息無論是寫死的,還是實時查詢的,還是分時間緩存的,前提是都得有個搜索引擎。

如何本地搭建一個搜索引擎?

直接套一個開源搜索引擎即可

開源搜索引擎有哪些?

http://www.oschina.net/project/tag/130/search-engine

本渣渣用過以下兩個
coreseek vs xunsearch

相比之下推薦 Xunsearch。

因為Coreseek多年未更新,且我覺得寫文檔的人可能語文沒學好

Xunsearch一直更新,用的人多,碰到問題解決方案比較好找,另外后端基於C/C++開發,我一直感覺跟C沾邊的在性能上都比較好。所以下面十分鍾在本地搭建一個搜索引擎的教程,以xunsearch為例。

xunsearch官方主頁在:http://www.xunsearch.com/

10分鍾本地搭建搜索引擎示例

安裝

本渣渣很久之前就安裝過了,步驟極其簡單,直接照此處官方文檔操作就行
安裝xunsearch

啟動xunsearch服務

本渣渣的xunsearch安裝在 /Users/sunjian/ 這個目錄下,執行:

/Users/sunjian/xunsearch/bin/xs-ctl.sh start

將 /Users/sunjian/ 替換成各自的xunsearch安裝路徑,執行后,即可啟動xunsearch服務

創建項目配置文件
創建項目配置文件

在 /xunsearch/sdk/php/app/ 目錄下創建項目配置文件,文件名一般與項目名同名,且以 .ini 結尾

project.name:項目名稱

project.default_charset:編碼,一般都是utf-8

server.index 和 server.search為服務端口,直接粘貼即可

下面 [xxx] 和 type 是需要創建索引的字段名稱和對應的數據類型。

比方說我抓過來一堆微信公眾號的數據,放到mysql中,如下:
mysql數據
我希望可以通過關鍵詞對這些公眾號內容的標題 或者 正文進行搜索,找出與這個詞相關內容,那么就需要對存放標題和正文的字段創建索引,而id字段是每條記錄的唯一標識,是mysql中的主鍵,所以也需要添加到索引中。

那么在xunsearch配置文件中,需要寫入創建索引用到的3個字段:id title 和 contont

字段名稱寫在 [ ] 內,分別對應在mysql中的字段名稱

type為這個字段對應的數據類型,這個數據類型不是mysql中的數據類型,是在xunsearch對應的數據類型,有如下幾種:
字段類型

很明顯,標題數據對應的類型為title,正文對應的字段類型為body。

ps:配置文件文檔:http://www.xunsearch.com/doc/php/guide/ini.guide

新建索引
新建索引
經典用法示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 清空 demo 項目的索引數據
util /Indexer .php --clean demo
 
# 導入 JSON 數據文件 file.json 到 demo 項目
util /Indexer .php -- source =json demo file .json
 
# 導入 MySQL 數據庫的 dbname.tbl_post 表到 demo 項目中,並且平滑重建
util /Indexer .php --rebuild -- source =mysql: //root :pass@localhost /dbname --sql= "SELECT * FROM tbl_post" --project=demo
 
# 查看 demo 項目在服務端的相關信息
util /Indexer .php --info -p demo
 
# 強制刷新 demo 項目的搜索日志
util /Indexer .php --flush-log --project demo
 
# 強制停止重建
util /Indexer .php --stop-rebuild demo

ps:索引操作說明文檔

http://www.xunsearch.com/doc/php/guide/util.indexer

測試搜索
測試搜索
測試搜索
ps:搜索測試文檔:http://www.xunsearch.com/doc/php/guide/util.quest

在web目錄下創建xunsearch前端搜索頁面骨架
前端搜索頁面骨架
前端搜索頁面骨架
ps:生成搜索代碼文檔:http://www.xunsearch.com/doc/php/guide/util.skel

本地開啟PHP環境
MAC本地,打開/etc/apache2/httpd.conf,將取消本行注釋
本地開啟PHP環境
重啟Apache:

sudo apachectl restart

ps:如果你本地已經開啟PHP環境請略過這步,如果是win系統請百度對應的開啟php環境的方法

瀏覽器打開本地localhost下生成的xunsearch前端搜索頁面
詞的相關內容:
本詞的相關內容
內容的相關內容:
內容的相關內容


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM