PHP redis實現超迷你全文檢索

2022-09-26 20:33:15 字數 1317 閱讀 3476

情景:我們平台有好多遊戲, 運營的同事在查詢某一款遊戲的時候, 目前使用的是html的select下拉列表的展現形式, 運營的同事得乙個個去找,然後選中,耗時又費眼

效果:輸入"三國"或者程式設計客棧"國三", 將自動列出所有包含"三國"的遊戲名字, 輸入不限順序; 例如輸入"殺三國",仍然會將"三國殺"這款遊戲找出來

實現:我用redis的集合+php的array_intersect()和mb系列函式, 實現了乙個超迷你的全文檢索功能

原理:(大道不過兩三言,說穿不值一文錢,哈哈)

1、將所有的遊戲名字讀出來,拆分成單個漢字

2、 將這些漢字作為redis集合的鍵,寫入redis,每個集合裡的值是所有那些遊戲名字中包含此漢字的遊戲的id

3、當使用者輸入文字的時候通過ajax非同步請求,將使用者輸入傳給php

4、將輸入的文字拆分成單個漢字, 分別找到這些漢字在redis中的集合值

5、取出來,求交集,就找到了同時包含這幾個漢字的遊戲的id

6、最後到資料庫裡查出來相應的遊戲資訊即可

缺點:刪除資料不方便

php寫入redis和檢索的**:

//自動補全

//不限輸入漢字的前後順序: 輸入"國三殺" => 輸出 "三國殺"

function getautocomplate()

$intwordlength = mb_strlen($word, 'utf-8');

$this->load->library('iredis');

if (1 == $intwordlength) else

}$arrgame = $this->gamemodel->getgamenameforautocomplate($arrgid);

// var_dump($arrgame);exit;

$jsongame = json_encode($arrgame);

exit($jsongame);

} //自動補全, 建立索引

function setautocomplate()

}$this->load->library('iredis');

foreach ($arrindex as $word => $arrgid) } }

操作redis的方法

//自動補全功能

public function setautocomplate($key, $value)

//自動補全功能

public function getautocomplate($key)

本文標題: php redis實現超迷你全文檢索

本文位址: /wangluo/php/181123.html

PHP redis實現超迷你全文檢索

2014年10月31日 11 45 39 情景 我們平台有好多遊戲,運營的同事在查詢某一款遊戲的時候,目前使用的是html的select下拉列表的展現形式,運營的同事得乙個個去找,然後選中,耗時又費眼 效果 輸入 三國 或者 國三 將自動列出所有包含 三國 的遊戲名字,輸入不限順序 例如輸入 殺三國...

php redis實現訊息佇列

參考 參考 訊息佇列 是在訊息的傳輸過程中儲存訊息的容器。訊息佇列管理器在將訊息從它的源中繼到它的目標時充當中間人。佇列的主要目的是提供路由並保證訊息的傳遞 如果傳送訊息時接收者不可用,訊息佇列會保留訊息,直到可以成功地傳遞它 應用場景 非同步處理,應用解耦,流量削鋒和訊息通訊四個場景 1 非同步處...

php redis實現延遲佇列

基於redis有序集實現延遲任務執行,比如某個時間給某個使用者發簡訊,訂單過期處理,等等 我是在tp5框架上寫的,實現起來很簡單,對於一些不是很複雜的應用足夠了,目前在公司專案中使用,後台程序並沒有實現多程序,不多說,貼 不回排版,見諒 1 命令列指令碼 執行方法 php think delay q...