W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
這項功能也是建立在搜索日志的基礎上。
對于英文,由于打字速度過快或各種原因都很容易造成一兩個字母出錯。對于中文來說,古代就動不動 出現(xiàn)同音”通假字“,絕大多數(shù)現(xiàn)代人也使用拼音輸入法,加上方言口音,亂用同音字現(xiàn)象非常普遍。
所以系統(tǒng)在綜合分析索引庫內(nèi)的詞匯、用戶搜索日志基礎上建立了一個龐大的糾錯體系,支持英文拼寫 糾錯、中文同音字糾錯、拼音轉換等。
使用這些功能都非常簡單,直接調(diào)用 XSSearch::getCorrectedQuery 即可,該方法接受搜索語句 作為參數(shù),如省略參數(shù)則直接使用最近一次 setQuery
的語句,返回值是修正詞匯組成的數(shù)組,若 沒有更合適的修正方案則返回空數(shù)組。
// 假設在本意是在 demo 項目中搜索 "測試",但不小心打成了 "側試"
$search->setQuery('側試');$docs = $search->search();
// 由于拼寫錯誤,這種情況返回的數(shù)據(jù)量可能極少甚至沒有,因此調(diào)用下面方法試圖進行修正
$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: 建議在搜索結果數(shù)量過少或沒有時再嘗試進行拼寫糾錯,而不是每次搜索都進行。
搜索建議是指類似百度那樣,當用戶在搜索框輸入少量的字、拼音、聲母時提示用戶一些相關的 熱門關鍵詞列表下拉框供用戶選擇。
這樣做非常有利于節(jié)省用戶的打字時間、提升用戶體驗。
我們通過 XSSearch::getExpandedQuery 來讀取展開的搜索詞,該方法返回展開的搜索詞組成的 數(shù)組,如果沒有任何可用詞則返回空數(shù)組。接受 2 個參數(shù):
$query
要展開的搜索詞,返回結果是以這個搜索詞為前綴、拼音前綴展開,此為必要參數(shù)
$limit
整數(shù)值,設置要返回的詞數(shù)量上限,默認為 10,最大值為 20
/**
* 以下例子也可以用 `util/Quest.php demo --suggest <word>` 進行測試
*/
$search->getExpandedQuery('x'); // 返回:項目, xunsearch, 行為, 項目測試
$search->getExpandedQuery('xm'); // 返回:項目, 項目測試
$search->getExpandedQuery('項'); // 返回:項目, 項目測試
$search->getExpandedQuery('項目'); // 返回:項目測試
Tip: 實際使用過程中,搜索建議通常單獨設計一個入口腳本,再在主搜索界面的搜索框中通過
ajax、AutoComplete
等JavaScript
技術來根據(jù)用戶的輸入動態(tài)載入建議詞列表。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: