社区
Java SE
帖子详情
索引文件的组织格式?我应该怎么写?应用倒排索引
naughty610
2010-02-02 12:01:18
本人现在想自己写一个搜索引擎,看了Lucene in action。基本思想差不多了,但是具体设计写代码的时候却不知道怎么下手。
我应该怎么组织索引文件的结构?
...全文
403
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阿,还有没有高人。。。
算法篇--
倒排
索引
本文介绍了
倒排
索引
的基本概念及其在搜
索引
擎中的
应用
,详细解释了
倒排
索引
的构建过程,包括单词-文档矩阵、
倒排
索引
实例、单词词典及倒排
文件
等内容,并以ElasticSearch为例说明了
倒排
索引
的实际
应用
。
什么是
倒排
索引
?
本文深入探讨了
倒排
索引
的原理,解释了其在搜
索引
擎中的
应用
,包括正向
索引
与
倒排
索引
的区别,以及如何通过
倒排
索引
快速检索包含特定关键词的文档。
python实现
倒排
索引
本文档介绍如何使用Python为文本
文件
构建
倒排
索引
,详细阐述了
倒排
索引
的过程,并提供了具体的实现代码,处理过程中保留了原始词汇,不进行额外的词条变化或特殊字符处理,仅对单词进行空格分割并转换为小
写
。要求去除出现次数最多的前100个字符串。
Lucene
倒排
索引
简述 细说
倒排
索引
构建
本文深入探讨了Lucene
倒排
索引
的构建过程,涉及核心数据结构ByteBlockPool、BytesRefHash和PostingsArrays的作用。ByteBlockPool通过二维数组实现动态增长,BytesRefHash提供Term与TermID的存储,而PostingsArrays记录Term信息。通过这些结构,Lucene高效地完成
倒排
索引
的构建,避免磁盘随机
写
入带来的性能问题。
什么是正向
索引
、反向
索引
(
倒排
索引
)?
本文深入探讨了
倒排
索引
的原理,包括正向
索引
与反向
索引
的区别,详细解释了
倒排
索引
的结构,如单词-文档矩阵、单词词典和倒排
文件
。并通过实例展示了如何构建
倒排
索引
,以及
倒排
索引
在搜索系统中的
应用
。
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章