• 通向KDE4之路(十三):Strigi与文件信息提取


    Troy Unrau

    因为糊口生涯义务上的忙碌,本栏目停息了一段时分,而今我回来离去重新为人人引见KDE4面前的技能。本周的主题是Strigi,这是一个在KDE4.0中将掉掉遍及运用的信息提取子系统。KDE原本就有从各种类型的文件中提取信息的功用,并可以将它们用于一系列装备状况中,比方属性对话框。Strigi能为这些功用带来全方位的抬举。下面是仔细内容...


    Strigi是一个比KDE层次更低的函数库,它用C 编写,其贪图目标是为别的装备供给一系列老例号令以从选定的文件中掉掉更多的信息。除了它的启示版本运用了KDE的SVN库之外,它与KDE并没有什么关系。它也拥有搜索的本领,但这并不是我这篇文章的中心。


    Strigi库可用于从文件中掉掉信息,比方一个图片的面积,一个音频文件的播放长度,内嵌的草图,日志的行数,源代码的允许信息或者可以在一个文本文件中探求特定字符串。Strigi还有别的利益,即它可以无缝地用于搜索收缩归档文件。实情上,它同时供给了一些有用的装备对象,叫做deepgrep和deepfind。这些有用的号令行装备允许你在二进制花样的文件中检索,其用法就像是在通俗文本文件中终止grep或find检索一样轻松。KDE连续了相同的库,于是我们可以行使这种奇异的利益从深埋在如.tgz如许的二进制文件中得到信息了。经Strigi增强');后的kio_jsteams框架将归档文件看作是本地文件夹,比方它可以让你访问/home/user/tarball.tar.gz/icons/。当你运用KDE软件调用kio_jstreams时,它可以义务的很好,但目前你运用别的范例的软件时就会出题目成绩。比方,当你运用Konqueror阅读,点击一个归档包中的文件,然后你平息用Gimp来翻开它的话,将这个文件传递给Gimp时会形成Gimp的溃散。正因如斯,此类操极目前还只是kio_slave的实验级特性,只需到这个题目成绩掉掉处置才会履行到一切装备(另一个题目成绩是它会将tgz或odp文件既看作是一个文件,也看作是一个目录)。


    Jos提到:“这个xmlindexer装备可以高效地从文件中提取信息。因为它可以输出为xml,它可以轻易地被别的装备所行使。别的搜索装备如Beagle和Tracker也可以从xmlindexer的使掷中掉掉弘大的利益。”xmlindexer装备是二进制的,一切装备可以轻松地在外部调用它,而不需要链接到Qt或是运用C 。也即是说,有良多体例可以间接运用Strigi库……


    过去KDE库拥有良多从文件中提取信息的体例(如经由历程KFileMetaInfo提取元数据),但在良多状况下它们不是运转很慢即是功用上无穷制。而运用了Strigi之后,当我们从PNG文件中提取数据时会发现速率有奔腾抬举。我不太明晰别的的速率测试,但令我印象深入的是它在检索数据时比以后存在的体例都要快得多。


    在KDE中还真的无法用截图来显示Strigi的义务状况,因为它只是一个库。但也不能说它的作用是不偏见的,如文件属性对话框等装备已经运用Strigi作为后端来提取数据,而这项义务畴前是由KFileMetaInfo完成的。其他Strigi摒挡被用于在文件阅读器中显示草图以及别的元数据(在某些方面已经完成了),而且初步的成绩显示其速率有了极度较着的改善。但到目前为止,它还不能为终极用户带来直观的KDE体验,至多还不能给人人带来视觉上的体验。但是更多KDE的子系统初步属意Strigi,我们很快就会看到Strigi为我们带来更多奇异而有用的特性了。


    比方:Strigi项目最大的救援者是NEPOMUK。Jos称“Nepomuk是一个大型的欧洲考察项目,它旨在增强');较量争论机装备的智能化和相互跟尾。Nepomuk-KDE是Nepomuk的规范及想法的KDE完成。我与Nepomuk的人们一路义务,特别是和Nepomuk-KDE的Sebastian Trueg的协作让我们的义务加倍顺利。目前Sebastian正在为Strigi编写一个附加的索引装备,它可以更好地用于检索语义学数据。”这个项目运用了少量的元数据和别的文件内容(如IRC的聊天记录文本)以供给一个庞大易用的桌面搜索系统。NEPOMUK在它终极成型之前还将阅历一次更名。


    因为Strigi完成的是对数据深层次地掘客,因而如Dolphin/Konqueror,文件属性对话框或NEPOMUK等装备中将会显示其成绩。目前的义务次要集中在将现有的KFilePlugins机制转向运用新的Strigi后端。想要观点该义务的平息,请访问KDE wiki的KFilePlugins平息页面。


    想要观点Strigi的更多信息,请访问主页或加入irc.kde.org的#strigi频道。


    (yuanjiayj)



    版权声明: 原创作品,允许转载,转载时请务必以超链接要领标明文章 原始情由 、作者信息和本声明。否则将清查法律责任。

  • 相关阅读:
    解释器模式
    java-->Hashtable简单使用
    HashTable和HashMap区别
    享元模式
    Beanutils.copyProperties( )用法
    删除List集合中的元素方法
    Date中before和after方法的使用
    Spring定时任务@Scheduled注解使用方式
    Oracle中INSTR、SUBSTR和NVL的用法
    StringBuffer的delete方法与deleteCharAt方法的区别。
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1974574.html
Copyright © 2020-2023  润新知