社区
Java SE
帖子详情
索引文件的组织格式?我应该怎么写?应用倒排索引
naughty610
2010-02-02 12:01:18
本人现在想自己写一个搜索引擎,看了Lucene in action。基本思想差不多了,但是具体设计写代码的时候却不知道怎么下手。
我应该怎么组织索引文件的结构?
...全文
404
17
打赏
收藏
索引文件的组织格式?我应该怎么写?应用倒排索引
本人现在想自己写一个搜索引擎,看了Lucene in action。基本思想差不多了,但是具体设计写代码的时候却不知道怎么下手。 我应该怎么组织索引文件的结构?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
_大傻瓜_
2011-05-08
打赏
举报
回复
大家其实都在空谈!正好最近也在研究倒排索引,倒排索引其实就是一个链表一样的东西!首先是链的根节点是这个词语,后面链的是与这个词语相关的句子的各种属性!!希望对你有用!!
naughty610
2010-02-02
打赏
举报
回复
[Quote=引用 6 楼 aniao 的回复:]
明显plain层级的TXT不行,你看下关于stc树的论文呢,虽然那个是用来聚类的,但是也能用于词的查找。
[/Quote]能解释一下为什么txt不行么?我这就去查您说的stc树,以前没接触过
Aniao
2010-02-02
打赏
举报
回复
明显plain层级的TXT不行,你看下关于stc树的论文呢,虽然那个是用来聚类的,但是也能用于词的查找。
naughty610
2010-02-02
打赏
举报
回复
自己顶阿。。。
knightzhuwei
2010-02-02
打赏
举报
回复
晕。。原来你想自己写啊。。。。
naughty610
2010-02-02
打赏
举报
回复
[Quote=引用 2 楼 knightzhuwei 的回复:]
索引文件结构不是Lucene会帮你组织的么 你只要用就行了啊
[/Quote]我想自己写一个搜索引擎的,不用lucene的代码。lucene的索引貌似挺复杂的。我的要求不是很高。不必写的那么复杂
knightzhuwei
2010-02-02
打赏
举报
回复
索引文件结构不是Lucene会帮你组织的么 你只要用就行了啊
naughty610
2010-02-02
打赏
举报
回复
我想把索引文件写在txt中,这样查看起来还方便一点。高人给点意见。用txt可行么?
最重要的是我该用什么索引结构?
Java2King
2010-02-02
打赏
举报
回复
倒排索引的结构一般是<关键词,文档个数,文档ID_list> ,你也可以用二进制保存,还可以使用压缩技术
Lucene的索引没有用B+树~只是直接的倒排,每次都是归并~
其实建索引主要就是写一个好的多路归并算法。一次性把多个外部索引并成一个
http://blog.csdn.net/Java2King/archive/2010/01/07/5152172.aspx 可以看看这个算法
naughty610
2010-02-02
打赏
举报
回复
[Quote=引用 13 楼 aniao 的回复:]
那你还不如直接把list或者map用JAVA的持久化直接存到硬盘上,到时候读出来直接是这个对象,就是对象序列化功能,你查下java.io.Serializable
[/Quote]恩,你的这个建议好。呵呵。这样就不用每次都从文件中读出来再创建list或者map对象了。谢谢。我正想着创建一个临时文件,存放临时修改的内容,到一定的时间再向磁盘里写呢。谢谢您了。
Aniao
2010-02-02
打赏
举报
回复
但是1秒钟存几十次的话性能跟不上,所以你要自己设计一个缓存,这个list或者map读写超过多少次再存一次文件,不要每次有一点点变化都保存
Aniao
2010-02-02
打赏
举报
回复
那你还不如直接把list或者map用JAVA的持久化直接存到硬盘上,到时候读出来直接是这个对象,就是对象序列化功能,你查下java.io.Serializable
naughty610
2010-02-02
打赏
举报
回复
[Quote=引用 10 楼 aniao 的回复:]
引用 7 楼 naughty610 的回复:
引用 6 楼 aniao 的回复:
明显plain层级的TXT不行,你看下关于stc树的论文呢,虽然那个是用来聚类的,但是也能用于词的查找。
能解释一下为什么txt不行么?我这就去查您说的stc树,以前没接触过
txt的话利用RandomAccess访问可以做到二叉树模仿结构(就像用数组模仿二叉树一样),其他结构就难了,要保存在磁盘上的快速查找结构目前常用的有B- tree, B+ tree,其他的都不适合于保存磁盘,但是这两种不是用来文本搜索的。总之我也不是很清楚。哈哈,你要努力了。
另外,根据我的看法,STC数要做到高性能的磁盘保存也不是太容易
[/Quote]你好。如果我用txt保存索引的话,读到内存里,用list或者map之类的存储。如果修改了这个list或者map,那就要把整个结构都重新保存到磁盘上。效率有点低。有没有什么有效的办法解决呢?
nihuajie05
2010-02-02
打赏
举报
回复
Lucene in action没看过
Aniao
2010-02-02
打赏
举报
回复
[Quote=引用 7 楼 naughty610 的回复:]
引用 6 楼 aniao 的回复:
明显plain层级的TXT不行,你看下关于stc树的论文呢,虽然那个是用来聚类的,但是也能用于词的查找。
能解释一下为什么txt不行么?我这就去查您说的stc树,以前没接触过
[/Quote]
txt的话利用RandomAccess访问可以做到二叉树模仿结构(就像用数组模仿二叉树一样),其他结构就难了,要保存在磁盘上的快速查找结构目前常用的有B- tree, B+ tree,其他的都不适合于保存磁盘,但是这两种不是用来文本搜索的。总之我也不是很清楚。哈哈,你要努力了。
另外,根据我的看法,STC数要做到高性能的磁盘保存也不是太容易
icy_csdn
2010-02-02
打赏
举报
回复
如果是学习呢,那就去看看lucene源代码。
naughty610
2010-02-02
打赏
举报
回复
dingding阿,还有没有高人。。。
算法篇--
倒排
索引
文章目录一、前言二、单词——文档矩阵 一、前言 见其名知其意,有
倒排
索引
,对应肯定,有正向
索引
。正向
索引
(forward index),反向
索引
(inverted index)更熟悉的名字是
倒排
索引
。 在搜
索引
擎中每个
文件
都对应一个
文件
ID,
文件
内容被表示为一系列关键词的集合(实际上在搜
索引
擎
索引
库中,关键词也已经转换为关键词ID)。例如“文档1”经过分词,提取了20个关键词,每个关键词都会记录它在文档中的出现次数和出现位置。 得到正向
索引
的结构如下:一般是通过key,去找value。 “文档1
什么是
倒排
索引
?
什么是
倒排
索引
? 不多说,直接上干货! 见其名知其意,有
倒排
索引
,对应肯定,有正向
索引
。 正向
索引
(forward index),反向
索引
(inverted index)更熟悉的名字是
倒排
索引
。 在搜
索引
擎中每个
文件
都对应一个
文件
ID,
文件
内容被表示为一系列关键词的集合(实际上在搜
索引
擎
索引
库中,关键词也已经转换为关键词ID)。例如...
python实现
倒排
索引
python实现
倒排
索引
倒排
索引
的过程简述: 题目形式如下: 前面的数字是文档号,每两行是一篇文档。 题目要求如下: 请编
写
程序(任意开发语言,推荐python3)为本目录下的1.txt
文件
构建
倒排
索引
,保存在2_generated.txt(每行
格式
:词条\tDocFreq\tdocID docID,\t指换行符,docID间使用空格) 文本处理要求:不要求做词条变化如fri...
Lucene
倒排
索引
简述 细说
倒排
索引
构建
设计合适的数据结构对影响提升至关,在特定的场景使用的合适的结构是成功的基石,Lucene采用哪些数据结构解决构建
索引
的性能呢?本文将带你领略Lucene数据结构之美。
什么是正向
索引
、反向
索引
(
倒排
索引
)?
1.正向
索引
正向
索引
(正排
索引
):正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。 “文档1”的ID > 单词1:出现次数,出现位置列表;单词2:出现次数,出现位置列表;…………。 “文档2”的ID > 此文档出现的关键词列表。 正排表结构如图1所示,这种
组织
方法在建立
索引
的时候结构比较简单,建立比较方...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章