搜索建議和糾錯

2019-08-14 14:14 更新

這項功能也是建立在搜索日志的基礎上。

1. 拼寫糾錯

對于英文,由于打字速度過快或各種原因都很容易造成一兩個字母出錯。對于中文來說,古代就動不動 出現同音”通假字“,絕大多數現代人也使用拼音輸入法,加上方言口音,亂用同音字現象非常普遍。

所以系統(tǒng)在綜合分析索引庫內的詞匯、用戶搜索日志基礎上建立了一個龐大的糾錯體系,支持英文拼寫 糾錯、中文同音字糾錯、拼音轉換等。

使用這些功能都非常簡單,直接調用 XSSearch::getCorrectedQuery 即可,該方法接受搜索語句 作為參數,如省略參數則直接使用最近一次 setQuery 的語句,返回值是修正詞匯組成的數組,若 沒有更合適的修正方案則返回空數組。

// 假設在本意是在 demo 項目中搜索 "測試",但不小心打成了 "側試"
$search->setQuery('側試');$docs = $search->search();  
 
// 由于拼寫錯誤,這種情況返回的數據量可能極少甚至沒有,因此調用下面方法試圖進行修正
$corrected = $search->getCorrectedQuery();if (count($corrected) !== 0){
// 有糾錯建議,列出來看看;此情況就會得到 "測試" 這一建議
echo "您是不是要找:\n";   
foreach ($corrected as $word){
      echo $word . "\n";   }
}
/** 
 * 以下拼寫示例則簡化,并直接傳入 Query 語句進行測試 
 * 您也可以例句用 `util/Quest.php demo --correct <word>` 進行測試 
*/
$search->getCorrectedQuery('cs');  // 通過聲母縮寫得到建議: "測試"
$search->getCorrectedQuery('ceshi');  // 通過全拼縮寫得到建議: "測試"
$search->getCorrectedQuery('yunsearch'); // 通過拼寫糾錯得到: xunsearch
$search->getCorrectedQuery('xunseach 側試'); // 混合糾錯得到: xunsearch測試

Tip: 建議在搜索結果數量過少或沒有時再嘗試進行拼寫糾錯,而不是每次搜索都進行。

2. 搜索建議

搜索建議是指類似百度那樣,當用戶在搜索框輸入少量的字、拼音、聲母時提示用戶一些相關的 熱門關鍵詞列表下拉框供用戶選擇。

這樣做非常有利于節(jié)省用戶的打字時間、提升用戶體驗。

我們通過 XSSearch::getExpandedQuery 來讀取展開的搜索詞,該方法返回展開的搜索詞組成的 數組,如果沒有任何可用詞則返回空數組。接受 2 個參數:

  • $query 要展開的搜索詞,返回結果是以這個搜索詞為前綴、拼音前綴展開,此為必要參數

  • $limit 整數值,設置要返回的詞數量上限,默認為 10,最大值為 20

/**
 * 以下例子也可以用 `util/Quest.php demo --suggest <word>` 進行測試 
*/
$search->getExpandedQuery('x'); // 返回:項目, xunsearch, 行為, 項目測試
$search->getExpandedQuery('xm'); // 返回:項目, 項目測試
$search->getExpandedQuery('項'); // 返回:項目, 項目測試
$search->getExpandedQuery('項目'); // 返回:項目測試

Tip: 實際使用過程中,搜索建議通常單獨設計一個入口腳本,再在主搜索界面的搜索框中通過 ajax、AutoComplete 等 JavaScript 技術來根據用戶的輸入動態(tài)載入建議詞列表。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號