索引文件的组织格式?我应该怎么写?应用倒排索引

naughty610 2010-02-02 12:01:18
本人现在想自己写一个搜索引擎,看了Lucene in action。基本思想差不多了,但是具体设计写代码的时候却不知道怎么下手。
我应该怎么组织索引文件的结构?
...全文
404 17 打赏 收藏 举报
写回复
用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阿,还有没有高人。。。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧