lucene,关键字在文中的位置,关键字在文章中出现的频次(------棘手问题,可给350分) lucene中可以找到关键字,但是怎么找到关键字在文中的位置,以及关键字在文中出现的频次请问用哪个类或接口,最好给出例子,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵,文中位置就要复杂点啊你先把她专程流(IO类)然后用readLine()的方法一行一行的查找你的关键字,用String类中的方法就可以找到,用个int flag记住你是在第几行找到的,然后就可以知道你的关键字是X行Y列了例子呵呵. 不好意思,我问的是用lucene怎么实现lucene里面自带有关于管理文中位置和关键词频次的类和接口,不过我不知道怎么样用 lucene !帮你up 呵呵,确实棘手,花了我两三天时间,可惜我只弄了一个简单的基于lucene的全文检索,没有认真去读里面的原码,只有帮你顶顶拉,求高手帮忙解决,我也好学习学习,省得以后有需求拉又要去找资料。 晕 菜鸟不懂 GZ一下顺便UP IndexReader中有方法,仔细看文档,我手编没有资料,记不清函数名称了 设有两篇文章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先对词典二元查找、找到该词,通过指向频率文件的指针读出所有文章号,然后返回结果。词典通常非常小,因而,整个过程的时间是毫秒级的。 而用普通的顺序匹配算法,不建索引,而是对所有文章的内容进行字符串匹配,这个过程将会相当缓慢,当文章数目很大时,时间往往是无法忍受的。 详细的你可以看:http://www.nationart.net/lucene/Lucene.pdf 怎么用Java实现保存网页的功能 如何加入多线程? 如何实现下列程序的数组输出?? list中的数据由大到小排序,有什么好的算法? 困惑:调用外部程序并杀掉外部程序的问题 swing中出现中文方框问题 获得hashtable的key @散分+终于长了一个星星,庆祝一下 弱弱的提个问题~关于AOP的~~ weblogic5.1附带的statelessSession例子都出错,help me。。。 Java Swing做的扫雷游戏程序,免费下载! 高分请教 音频采集 回放 分不够可以另开!
你先把她专程流(IO类)然后用readLine()的方法一行一行的查找你的关键字,用String类中的方法就可以找到,用个int flag记住你是在第几行找到的,然后就可以知道你的关键字是X行Y列了
例子呵呵.
!
帮你up
顺便UP
文章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先对词典二元查找、找到该词,通过指向频率文件的指针读出所有文章号,然后返回结果。词典通常非常小,因而,整个过程的时间是毫秒级的。
而用普通的顺序匹配算法,不建索引,而是对所有文章的内容进行字符串匹配,这个过程将会相当缓慢,当文章数目很大时,时间往往是无法忍受的。