日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

sphinx随笔记了一下

發布時間:2024/1/17 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sphinx随笔记了一下 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sphinx筆記

一:下載中文版coreseek包
1:解壓后,將etc下的mysql。conf文件復制一份放到上級目錄下,改名為sphinx。conf
2:配置文件:
2.1:source配置數據源
source goods

你要為那些數據建索引,比如,為php39數據庫中的p39—goods表為數據源
sql_db = php39

sql_query 主查詢,為那些數據建索引,就用一條語句他她們取出來 例如:select id, name,title from table 為這三個字段減索引
知識點:group_concat() mysql函數

測試語句:SELECT group_concat(town) FROM `players` group by town
結果去查找town中去查找哪些值是一樣的,如果相等,就全部列出來,以逗號分割進行列出,如下:


二:2.2:index 索引文件


一個數據源對應一個index
定義索引文件

index goods
{
source = goods
生成的索引文件存放的目錄注意,最后的goods是文件名叫goods 不是goods目錄下
path = c:\****\goods

}
2.3:數據庫配置


三:創建索引:


配置完成后,打開cmd 進入bin下降indexer。exe拉近cmd里來

*****。exe -c ****\sphinx.conf(這里是配置的那個路徑) goods -》 指的是哪一個數據源
回車就行,到此這個索引就建完了


四:安裝并啟動sphinx服務器
打開cmd 使用bin文件夾下的serchd。exe命令 拖入cmd中去

*** -c 配置的路徑***\sphinx.conf --install


伍:安裝服務窗口中找到sphinx并啟動

安裝玩的那個窗口中輸入services.msc即可

在本地服務窗口中可找到searchd這個服務,說明啟動成功


陸:項目中使用這個sphinx查詢

A:將sphinx.api.php復制進項目中---放到根目錄下就行
B:在控制器中使用php操作他

function keyserch(){

$key = I($key);

require('./sphinxapi.php');引入這個類文件,他是用來操作sphinx的類文件,調用它里面的方法用就行,不會的百度sphinxapi里的方法,手冊有介紹

$sph = new \sphinxclient();
$sph = setserver('localhost',9312);連接服務器9312 是sphx的固定端口
$sph = query($key,goods);第一個參數是查詢那個關鍵字,第二個參數是從那個索引文件里查詢搜索,{ 指的是索引的名字 },這里是只index goods這里定義的這個

?


?柒:在牛逼一點的功能:

實時索引更新:個人理解 主索引+臨時索引(增量索引) 來實現類似于實時更新的效果,原理是,為新數據生成個小的臨時的索引文件,然后將索引文件合并到主索引文件中去

a:先給他建一個主索引,從這些索引文件中,查詢出一個最大的商品id來 新建一個數據表,將這個最大的商品的id update存到這個表中

b:然后每次新添加的商品,因為不會自動建立索引,所以他們的id不會再索引文件中,他們的商品的id肯定比索引中的保存的最大的商品id要大

c: 然后給新添加的商品新建一個索引,按照上述方法,source goods數據源復制一份,改為 source goods_new 作為新索引數據源
index goods索引文件復制一份,改為index goods_new 作為新索引的名字

捌:然后合并主索引


修改sphx配置文件:新建一個數據表叫spinx_xin 字段為id

source goods
{
type=**
****
sql_query = select *****from p39_goods 建立的索引文件,此時為主索引

# 在創建好索引后吧最后一個商品的id更新到新建的表中:
$sql_query_post = update spinx_xin set id= (select max(id) from p39_goods )

}

測試一下:重新創建一下索引即可看到效果 注意:重建索引需在本地服務中心關閉search的這個sphinx服務 然后執行services.msc在啟動 然后輸入建立索引命令即可

新建索引不關閉服務器也行,在建索引命令后面加上 --rotate這個命令即可
執行完命令后就把id更新到表中了

注意:這里只是把索引的文件的商品id更新到了新表中,新的商品還沒有索引
玖:接下來就是給新商品新建索引,然后把它每過一段時間,合并到主索引中
復制source goods 為goods_new

修改索引的sql語句

source goods_new
{

******
****
*****
新商品id肯定大于索引中最大的商品的id,
因為已將最大的id存在spinx_xin 新表的id中
只要比較商品表中比這個新表的id大的就是新商品

修改sql語句,目的是查詢出新商品,然后給新商品建索引
sql_query = select id ****from p39_goods where id>(select id from spinx_xin )
******
}
同理新建了一個數據源就得新建一個index索引文件

復制一份index goods 索引文件在做相應的修改,新的索引就好了

?

?

拾:
寫一個腳本,bat文件,目的有兩個,
先給增量數據生成索引文件
把新生成的索引文件合并到主索引中


bat中寫入建立索引的語句:

1:建立新的索引文件
****index.exe -c ***\sphinx.conf(路徑) goods_new
2:合并索引新索引文件到主索引文件中
****indexer.exe -c ***\sphinx.conf --merge goods goods_new --rotate (這里別忘了寫rotate相當于,自動關閉sghinx服務器建索引自動打開,上文有提到)


然后執行腳本文件

但是每次添加商品手動執行這個腳本更新索引,太麻煩了,所以還要配置一下這個腳本,讓他自動每五分鐘執行一次

window:管理工具--任務計劃 設置五分鐘自動執行腳本
linux:crond進程

轉載于:https://www.cnblogs.com/yszr/p/7083632.html

總結

以上是生活随笔為你收集整理的sphinx随笔记了一下的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。