lucene中可以找到关键字,但是怎么找到关键字在文中的位置,以及关键字在文中出现的频次请问用哪个类或接口,最好给出例子,谢谢!

解决方案 »

  1.   

    呵呵,文中位置就要复杂点啊
    你先把她专程流(IO类)然后用readLine()的方法一行一行的查找你的关键字,用String类中的方法就可以找到,用个int flag记住你是在第几行找到的,然后就可以知道你的关键字是X行Y列了
    例子呵呵.
      

  2.   

    不好意思,我问的是用lucene怎么实现lucene里面自带有关于管理文中位置和关键词频次的类和接口,不过我不知道怎么样用
      

  3.   

    lucene  
    !
    帮你up
      

  4.   

    呵呵,确实棘手,花了我两三天时间,可惜我只弄了一个简单的基于lucene的全文检索,没有认真去读里面的原码,只有帮你顶顶拉,求高手帮忙解决,我也好学习学习,省得以后有需求拉又要去找资料。
      

  5.   

    晕   菜鸟不懂   GZ一下
    顺便UP
      

  6.   

    IndexReader中有方法,仔细看文档,我手编没有资料,记不清函数名称了
      

  7.   

    设有两篇文章1和2 
    文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too. 
    文章2的内容为:He once lived in Shanghai. 
    1.首先找出关键字,
    2.接着建立倒排索引
    关键词   文章号 
    guangzhou  1 
    he         2 
    i           1 
    live       1,2 
    shanghai   2 
    tom         1 
    请注意关键字是按字符顺序排列的,因此lucene可以用二元搜索算法快速定位关键词。
    加上“出现频率”和“出现位置”信息后,索引结构变为: 
    关键词   文章号    [出现频率]   出现位置 
    guangzhou  1        [2]               3,6 
    he         2        [1]               1 
    i          1        [1]               4 
    live       1       [2],2[1]           2,5,2 
    shanghai   2       [1]               3 
    tom        1       [1]               1 
    live在文章1中出现了2次,文章2中出现了一次,它的出现位置为“2,5,2”这表示:因为文章1中出现了2次,那么“2,5”就表示live在文章1中出现的两个位置,文章2中出现了一次,剩下的“2”就表示live是文章2中第 2个关键字。
    实现时 lucene将上面三列分别作为词典文件、频率文件、位置文件保存。其中词典文件不仅保存有每个关键词,还保留了指向频率文件和位置文件的指针,通过指针可以找到该关键字的频率信息和位置信息。 
    Lucene中使用了field用于表达关键词所在位置(如标题中,文章中,url中),在建索引中,该field信息也记录在词典文件中,每个关键词都有一个field信息。 
    为了减小索引文件的大小,Lucene对索引还使用了压缩技术。首先,对词典文件中的关键词进行了压缩,关键词压缩为<前缀长度,后缀>,例如:当前词为“阿拉伯语”,上一个词为“阿拉伯”,那么“阿拉伯语”压缩为<3,语>。其次大量用到的是对数字的压缩,数字只保存与上一个值的差值(这样可以减小数字的长度,进而减少保存该数字需要的字节数)。例如当前文章号是16389(不压缩要用3个字节保存),上一文章号是16382,压缩后保存7(只用一个字节)。 
    对该索引的查询:
    假设要查询单词 “live”,lucene先对词典二元查找、找到该词,通过指向频率文件的指针读出所有文章号,然后返回结果。词典通常非常小,因而,整个过程的时间是毫秒级的。 
    而用普通的顺序匹配算法,不建索引,而是对所有文章的内容进行字符串匹配,这个过程将会相当缓慢,当文章数目很大时,时间往往是无法忍受的。
      

  8.   

    详细的你可以看:http://www.nationart.net/lucene/Lucene.pdf