forked from openkylin/ukui-search
更新README.md
This commit is contained in:
parent
d8eece0803
commit
4357e84ae9
32
README.md
32
README.md
|
@ -3,28 +3,29 @@
|
|||
[dWIP] UKUI Search is a user-wide desktop search feature of UKUI desktop environment.
|
||||
|
||||
## 简介
|
||||
狭义上的ukui-search指ukui桌面环境中的全局搜索应用,目前最新版本为3.1-xxx。全局搜索应用提供了本地文件、文本内容、应用、设置项、便签等聚合搜索功能,基于其文件索引功能,可以为用户提供快速准确的搜索体验。
|
||||
狭义上的ukui-search指ukui桌面环境中的全局搜索应用,目前最新版本为3.22.x.x。全局搜索应用提供了本地文件、文本内容、应用、设置项、便签等聚合搜索功能,基于其文件索引功能,可以为用户提供快速准确的搜索体验。
|
||||
|
||||
广义的ukui-search除了包括全局搜索应用,还包括在ukui桌面环境中的本地搜索服务以及其开发接口。基于文建索引服务,应用搜索数据服务等基础数据源服务,可以提供基于C++接口的搜索功能,应用开发者可以通过引用动态库的形式直接使用其搜索功能。除此之外,ukui桌面环境搜索服务还提供了一组基于Qt插件框架的插件接口,用户可以通过继承接口以实现搜索功能的扩展。
|
||||
以下提到的ukui-search如无说明均指后者。
|
||||
|
||||
ukui-search 目前共有5个包:
|
||||
ukui-search 目前被打包成6个包(openkylin):
|
||||
+ ukui-search_xxxxxx.deb
|
||||
+ libukui-search-dev_xxxxx.deb
|
||||
+ libukui-search0_xxxxx.deb
|
||||
+ libchinese-segmentation0_xxxx.deb
|
||||
+ libukui-search2_xxxxx.deb
|
||||
+ libchinese-segmentation1_xxxx.deb
|
||||
+ libchinese-segmentation-dev_xxxx.deb
|
||||
+ ukui-search-systemdbus_xxxxx.deb
|
||||
|
||||
xxx代表版本号。其中,ukui-search 为全局搜索应用本体,libukui-search包提供了搜索服务基本功能以及扩展接口,libukui-search-dev为其开发包。libchinese-segmentation包为搜索服务提供了NLP能力,如中文分词等。ukui-search-systemdbus包提供了一些systemdbus提权操作。
|
||||
|
||||
## 运行
|
||||
搜索服务相关的进程共有5个,包括ukui-search(全局搜索GUI界面),ukui-search-service(文件搜索服务),first-index(文件搜索服务子进程),inotify-index(文件搜索服务子进程),ukui-search-app-data-service(应用数据维护服务)。
|
||||
搜索服务相关的进程共有5个,包括ukui-search(全局搜索GUI界面),ukui-search-service(文件搜索服务),ukui-search-service-dir-manager(文件搜索目录管理), ukui-search-app-data-service(应用数据服务),ukuisearch-systemdbus(systembus)。
|
||||
|
||||
ukui-search、ukui-search-service和ukui-search-app-data-service服务默认开机自启,其中first-index进程和inotify-index进程作为ukui-search-service的子进程,并由其控制启动和退出。
|
||||
所有进程默认开机自启。
|
||||
|
||||
## 快捷键、命令行和dbus接口
|
||||
|
||||
呼出搜索GUI界面的系统快捷键为`WIN+s`。
|
||||
呼出搜索GUI界面的系统快捷键为`WIN+s`,快捷键由ukui-settings-daemon(ukui用户配置服务)提供。
|
||||
|
||||
ukui-search进程的命令行如下:
|
||||
|
||||
|
@ -35,6 +36,11 @@ Options:
|
|||
-v, --version Displays version information.
|
||||
-q, --quit Quit ukui-search application
|
||||
-s, --show Show main window
|
||||
--unregister <pluginName> unregister a plugin with <pluginName>
|
||||
--register <pluginName> register a plugin with <pluginName>
|
||||
-m, --move <pluginName> move <pluginName> to the target pos
|
||||
-i, --index <index> move plugin to <index>
|
||||
|
||||
```
|
||||
|
||||
ukui-search-service的命令行如下:
|
||||
|
@ -46,6 +52,7 @@ Options:
|
|||
-v, --version Displays version information.
|
||||
-q, --quit Stop service
|
||||
-i, --index <option> start or stop file index
|
||||
-m, --monitor Show index monitor window
|
||||
```
|
||||
|
||||
ukui-search 提供的dbus接口:
|
||||
|
@ -54,6 +61,7 @@ ukui-search 提供的dbus接口:
|
|||
service: com.ukui.search.service
|
||||
path: /
|
||||
interface: com.ukui.search.service
|
||||
mainWindowSwitch() ↦ () //显示或关闭主窗口
|
||||
showWindow () ↦ () //显示搜索主窗口
|
||||
searchKeyword (String keyword) ↦ () //显示主窗口并搜索传入的关键字
|
||||
```
|
||||
|
@ -128,9 +136,9 @@ interface: org.freedesktop.FileManager1
|
|||
+ 直接搜索:类似文件管理的搜索,通过遍历匹配关键字搜索,不支持文本内容搜索。
|
||||
|
||||
+ 索引搜索:搜索通过遍历文件系统建立数据库(需要消耗一定的时间和资源),搜索时直接对数据库进行搜索,可以实现毫秒级的搜索响应,建立索引的过程中,搜索结果可能不全或者搜不出结果。
|
||||
首次索引进程first-index由ukui-search-service进程拉起,在用户首次开启索引功能或者索引损坏需要重建索引时开启;索引更新进程为inotify-index,同样由ukui-search-service进程拉起,但更新进程不会一直存在,其只在用户有文件更新时启动,一段时间后自动关闭。
|
||||
首次打开索引时,ukui-search-service进程会新建两个数据库分别存储基础索引信息(用于文件名搜索)和文本内容索引信息(用于文本内容搜索),完成首次索引后,索引服务会依赖inotify机制进行实时监听更新。索引关闭再打开或重启服务时,索引服务会对遍历文件并对数据库进行校验以增量更新。
|
||||
索引数据库会基于文件系统监听进行实时更新。但是由于解析文本需要时间,所以大文件的索引新可能会有短暂的延迟。由于各种意外原因,比如索引更新过程中掉电关机,可能会导致索引损坏,此时搜索在下次开机时会重新建立索引来保证正常的文件搜索功能。基于机器配置和本地文件的数量,大小以及种类,索引重建的时间可以从几秒到数分钟不等。
|
||||
索引搜索支持文本内容搜索,基本原理可以参考 [倒排索引与优麒麟的文件搜索](https://docs.qq.com/doc/DU0p0S1lRelp2aW1y) 。建立索引时,搜索会对常用的文本文件进行解析,提取关键词存入数据库。搜索时,用户输入的文本也会被提取关键词,和数据库中的关键词进行匹配, 所以文本索引并不能保证你搜索一个文本文件里的任意内容都能搜出这个文件,这也不是普遍的应用场景。搜索输入的文本中必须要包含【关键词】才可以。比如你搜索一个‘的’,由于‘的’并不是任何文件的关键词,所以并不会有搜索到任何文件。事实上,我们有一个停用词词库,专门用来排除‘我’‘的’于是‘等等基本上在每个文档都会出现的一些无用词。目前,搜索支持解析的文件格式有:docx,pptx, xlsx, txt(大部分编码格式), doc, dot, wps, ppt, pps, dps, et, xls, pdf,以上格式均不支持加密文件的解析。
|
||||
索引搜索支持文本内容搜索,基本原理可以参考 [倒排索引与优麒麟的文件搜索](https://docs.qq.com/doc/DU0p0S1lRelp2aW1y) 。建立索引时,搜索会对常用的文本文件进行解析,提取关键词存入数据库。搜索时,用户输入的文本也会被提取关键词,和数据库中的关键词进行匹配, 所以文本索引并不能保证你搜索一个文本文件里的任意内容都能搜出这个文件,这也不是普遍的应用场景。搜索输入的文本中必须要包含【关键词】才可以。比如你搜索一个‘的’,由于‘的’并不是任何文件的关键词,所以并不会有搜索到任何文件。事实上,我们有一个停用词词库,专门用来排除‘我’‘的’于是‘等等基本上在每个文档都会出现的一些无用词。目前,搜索支持解析的文件格式有:docx,pptx, xlsx, txt(大部分编码格式), doc, dot, wps, ppt, pps, dps, et, xls, pdf,uof,uot,uos,uop,ofd以上格式均不支持加密文件的解析,此外,文件索引支持图片ocr提取文字,所以你也可以通过图片中的文字搜索到图片(就像文档一样),支持的图片格式:png,bmp,gif,tif,tiff,webp,jpe,jpg,jpeg。
|
||||
|
||||
> 注意:应用的.desktop文件并不是应用本身或者“快捷方式”,对于搜索来说它只是一个文件,所以搜索desktop文件的名字并不能搜出这个应用,除非它恰好和应用重名。另外,在文件搜索中显示的dekstop文件并不会以应用的形式显示,而是显示它本来的样子——一个文件。
|
||||
|
||||
|
@ -147,11 +155,10 @@ ukui-search应用和ukui-search-service、ukui-search-app-data-service的配置
|
|||
+ ukui-search-index-status.conf ------------------文件索引服务状态记录
|
||||
+ index_data ---------------------------------------------文件索引数据库
|
||||
+ content_index_data ---------------------------------文本内容数据库
|
||||
+ ocr_index_data --------------------------------------- OCR图片搜索数据库
|
||||
|
||||
## 编译
|
||||
|
||||
下载源码,切换到ukss-dev分支(优麒麟2204版本)
|
||||
下载源码
|
||||
|
||||
根据debian/control文件安装编译依赖
|
||||
|
||||
|
@ -343,3 +350,6 @@ virtual QWidget *detailPage(const ResultInfo &ri) = 0;
|
|||
|
||||
请一定要注意,搜索可能被快速触发,所以你需要确保当用户进行一次搜索时,队列里不会被错误的插入上一次的搜索结果。
|
||||
|
||||
## 联系我们
|
||||
目前ukui-search项目的负责人:iaom zhangpengfei@kylinos.cn
|
||||
由于项目更新很快,所以以上内容请以代码为准。
|
||||
|
|
Loading…
Reference in New Issue