Simple: 一個支援中文和拼音搜尋的 sqlite fts5外掛
之前的工作關係,需要在手機上支援中文和拼音搜尋。由於手機上儲存資料一般都是用 sqlite,所以是基於 sqlite3 fts5 來實現。這段時間再次入門 c++,所以想用 c++ 實現一下,一來用於練手,二來當時做的時候發現網路上這方面開源的實現不多,也造福下其他人。
背景
搜尋現在幾乎是每個 APP 必備的功能,使用者已經習慣了搜尋框搜一下,避免到處去找。搜尋也是幫助使用者查詢舊資訊,發現新功能的一個重要手段。平常我們用微信的時候經常會搜尋聯絡人和聊天記錄,發現微信這一塊做的還是非常好的。關於微信的全文搜尋,可以看看這兩篇文章:微信全文搜尋優化之路 和 微信移動端的全文檢索多音字問題解決方案 。
第一篇文章主要是問題和原理的概述,第二篇文章是核心分詞器的實現。我寫的這個專案主要是實現了 simple 分詞器,並提供一些輔助函式幫助使用。
Simple 分詞器
搜尋的核心是建倒排索引,建索引的核心是分詞器。 跟名字一下,Simple 分詞器的規則非常簡單:
- 空白符跳過
- 連續的數字作為整體是一個索引
- 連續的英文字母作為整體並轉換成小寫索引
- 中文字單獨建索引,並且把中文字轉成拼音後也建搜尋,這樣就能同時支援中文和拼音檢索。另外把拼音首字母也建索引,這樣搜尋 zjl 就能命中 “周杰倫”。
- 其他字元統一單獨建索引,這樣搜尋
相關推薦
Simple: 一個支援中文和拼音搜尋的 sqlite fts5外掛
之前的工作關係,需要在手機上支援中文和拼音搜尋。由於手機上儲存資料一般都是用 sqlite,所以是基於 sqlite3 fts5 來實現。這段時間再次入門 c++,所以想用 c++ 實現一下,一來用於練手,二來當時做的時候發現網路上這方面開源的實現不多,也造福下其他人。 背景 搜尋現在幾乎是每個 APP 必備
ElasticSearch簡單搜尋程式+分詞(中文和拼音)
es的注意事項:不能用root使用者啟動。 如果是虛擬機器啟動使用,在安裝5.0版本以上,需要修改一些引數。 es使用者需要對es資料夾有許可權。
Android 通訊錄搜尋(中文和拼音檢索通訊錄)
使用ContentResolver 在使用Google網頁搜尋功能時,只要輸入幾個字,就會在下方出現很多建議關鍵字。這次的範例,將以手機裡的通訊錄作為查詢物件,並設計出一個類似建議的可能聯絡人。要使用類似建議完成功能的AutoCompleteView Widget,以及示範
BERT 現已開源:最先進的 NLP 預訓練技術,支援中文和更多語言
文 / Jacob Devlin 和 Ming-Wei Chang, Research Scientists, Google AI Language 缺少訓練資料是自然語言處理(Natural Language Processing, NLP)面臨的最大挑戰之一。由
es配置中文和拼音分詞器
1.簡介 es預設使用standard分詞器 es還有其他分詞器比如simple writespace language 2.配置中文分詞器(需先安裝git maven unzip) git clone https://github.com/medcl/elasticse
C# winfrom 寫的一個搜尋助手,可以按照標題和內容搜尋,支援doc,xls,ppt,pdf,txt等格式的檔案搜尋
C# winfrom 寫的一個搜尋助手,可以按照標題和內容搜尋,指定目錄後,遍歷搜尋檔案和子目,現在只寫了支援.DOC.DOCX.XLS.XLSX.PPT.PPTX.PDF.HTML.HTM.TXT等格式的檔案搜尋,讀取execl 內容使用的是NPOI元件,doc,html,txt 格式的
Android 實現ListView的A-Z字母排序和過濾搜尋功能,實現漢字轉成拼音
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
獲取一個臨時檔案和對中文檔名字進行編碼的工具類
首先我們明白,一個檔案可以命名為任何名稱,比如一個excel,我們可以命名為不帶字尾,然後向裡面寫入對應的內容,只是在匯出的時候將檔案命名為正確的名字即可。 一個在當前使用者的預設臨時資料夾中生成一個當前日期的資料夾,然後再裡面寫入一個用UUID生成名字的檔案,常用於Java
Java前端Rsa公鑰加密,後端Rsa私鑰解密(支援字元和中文)
Java前端Rsa公鑰加密,後端Rsa私鑰解密(支援字元和中文) package com.utils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import j
LeeCode 10: 給定一個字串 (s) 和一個字元模式 (p)。實現支援 '.' 和 '*' 的正則表示式匹配
題目 給定一個字串 (s) 和一個字元模式 (p)。實現支援 '.' 和 '*' 的正則表示式匹配。 '.' 匹配任意單個字元。 '*' 匹配零個或多個前面的元素。 匹配應該覆蓋整個字串 (s)
Java-基於百度API的圖片文字識別(支援中文,英文和中英文混合)
PS: 基於Java 1.8 版本控制:maven 使用之前需要獲取對應的專案API_KEY,SECRET_KEY,這些引數在使用API的時候必須用到,
select2.js外掛支援拼音搜尋(最新版-4.0.6)
通過兩天的研究,學會使用select2.js,並且修改了select2.js的原始碼,實現拼音搜尋的功能(pinyin.js連結,將中文轉換成拼音),下面主要講解如何實現拼音搜尋功能: 1.從https://select2.org/官網上下載最新的select2.js,學習
Java-基於百度API的圖片文字識別(支援中文,英文和中英文混合)貨運APP開發找上海捌躍網路科技有限公司
PS: 基於Java 1.8 版本控制:maven 使用之前需要獲取對應的專案API_KEY,SECRET_KEY,這些引數在使用API的時候必須用到,用於生成access_token。 如何獲取這些引數:在百度開發者中心申請一個“通用文字識別”專案,然後就可
一個方便快捷gif線上水印製作(支援文字和圖片)
有時候我們要給gif加上水印的確不太方便,需要獲取每一幀下來然後進行處理。 這個時候自己弄得話花費時間也長。 使用起來也很簡單,製作文字水印時候只需要上傳gif檔案就行,等待伺服器處理完成自動下載預覽。 製作圖片水印時候需要先傳圖片檔案(png,jpg),上傳成功後
SpringBoot整合Elasticsearch 進階,實現[中文、拼音、繁簡體轉換]高階搜尋
Elasticsearch 分詞 分詞分為讀時分詞和寫時分詞。 讀時分詞發生在使用者查詢時,ES 會即時地對使用者輸入的關鍵詞進行分詞,分詞結果只存在記憶體中,當查詢結束時,分詞結果也會隨即消失。而寫時分詞發生在文件寫入時,ES 會對文件進行分詞後,將結果存入倒排索引,該部分最終會以
《物聯網框架ServerSuperIO教程》-19.裝置驅動和OPC Client支援mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本釋出
19.裝置驅動和OPC Client支援mysql、oracle、sqlite、sqlserver的持久化 19.1 概述 ServerSuperIO支援裝置驅動和OPC Client採集的資料資訊按標籤集合寫入mysql、oracle、sqlserver和sqlite資料庫。現在還支援
日誌分析工具 GoAccess v1.3 釋出,支援簡體中文和安裝使用
GoAccess 簡介 簡單來說呢 GoAccess 是一個專門用來分析日誌的工具,既可以在終端中展示結果,也可以生成 HTML 報表在瀏覽器中檢視。GoAccess 最吸引人的一點就是它生成的 HTML 足夠炫酷(ÒωÓױ)。 其他方面的特性包括 1、資料近乎是實時的——瀏覽
java十六進位制字串和字串互轉(支援中文)
*字串轉16進位制 /** * 字串轉換成為16進位制(無需Unicode編碼) * @param str * @return */ public static String s
Solr6.5配置中文分詞IKAnalyzer和拼音分詞pinyinAnalyzer (二)
之前在 Solr6.5在Centos6上的安裝與配置 (一) 一文中介紹了solr6.5的安裝。這篇文章主要介紹建立Solr的Core並配置中文IKAnalyzer分詞和拼音檢索。 一、建立Core: 1、首先在solrhome(solrhome的路徑和配置見Solr6.5在Centos6上的安裝與配置
樹莓派(raspberry pi)學習6: 中文支援(中文顯示和中文輸入法)
樹莓派(raspberry pi)的原版是沒有中文支援的,需安裝 startx 後,用 Midori 瀏覽器 可以瀏覽網頁 瀏覽www.baidu.com,一堆亂碼 安裝中文顯示支援 第一步,先為終端進行相關更新:sudo apt-get update 第二步:為