文檔說明

搜索建議和糾錯

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

1. 拼寫糾錯

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

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

使用這些功能都非常簡單,直接調用 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. 搜索建議

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

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

我們通過 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、AutoCompleteJavaScript 技術來根據用戶的輸入動態載入建議詞列表。

$Id$

一條評論!

#114 報告
liupengfei at 2017-09-12 09:55:27
getCorrectedQuery getExpandedQuery 返回都為空啊

getCorrectedQuery getExpandedQuery 返回都為空啊

請到論壇 登錄 后刷新本頁面!

青海快三开奖走势图_ 湖北体彩11选五技术 排列五对子技巧 股票指数涨有什么用自己的股票不一定涨 今天上海时时乐开奖走势图 在线配资推荐天牛宝配资专注 内蒙古快三预测一定牛 pc蛋蛋赌博喊话 江苏快3是正规彩票吗 北京pk10官网软件下载 贵州11选五前三直开奖结果