關(guān)鍵字搜索庫(kù),支持全拼+首字母+多音字

前言

其實(shí)這個(gè)庫(kù)早年就已經(jīng)創(chuàng)建并完成了第一版,支持 全拼+首字母+中英文+多音字 搜索,功能還算強(qiáng)大。后面也一直沒再關(guān)注。這次借著修復(fù) BUG 的功夫更新了一版,并發(fā)布了一個(gè) swift 版本,也算還了一筆技術(shù)債。

項(xiàng)目地址:點(diǎn)我

功能介紹

這個(gè)庫(kù)目前由 ObjectiveC 版和 Swift 版。都支持 全拼+首字母+中英文+多音字 搜索。

具體效果如何,請(qǐng)看下圖:

Search.gif

原理介紹

  1. 加載拼音資源文件,初始化配置
  2. 以匹配關(guān)鍵字 keyword 為例,優(yōu)先精準(zhǔn)匹配
  3. 精準(zhǔn)匹配沒搜索到,那么考慮將搜索文本轉(zhuǎn)成拼音首字母,將 keyword 去搜索這個(gè)拼音首字母的字符串是否有匹配到
  4. 如果拼音首字母沒匹配到,那么考慮全拼是否能匹配

實(shí)現(xiàn)原理說穿了還是比較簡(jiǎn)單的,主要是將各個(gè)文字的拼音的排列組合列出來,再去一一匹配。

使用

OC版

NSArray *ranges;
BOOL match = [self.textLabel.text canMatchWithKeyword:searchText allRanges:&ranges];
if (match) {
    ...
}

swift版

var ranges: [Range<String.Index>] = []
text.canMatch(with: searchText, all: &ranges)
if ranges.count > 0 {
    ...
}

如何集成

對(duì)于ObjectiveC項(xiàng)目,通過pod組件庫(kù)的方式引入。執(zhí)行:

pod 'IASearchKit', '~> 1.2.0'

對(duì)于Swift項(xiàng)目,通過pod組件庫(kù)方式引入。執(zhí)行:

pod 'KeySearch', '~> 0.1.5'

源碼地址:點(diǎn)我跳轉(zhuǎn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容