jsearch的索引文件结构

jsearch是一个高性能的全文检索工具包,基于倒排索引,基于java8,类似于lucene,但更轻量级。

jsearch的索引文件结构定义如下:

    1、一个词的索引由=分割的三部分组成:
       
第一部分是词
       
第二部分是这个词在多少个文档中出现过(上限1000
       
第三部分是倒排表
    2
、倒排表由多个倒排表项目组成,倒排表项目之间使用|分割
    3
、倒排表项目的组成又分为三部分,用_分割:
       
第一部分是文档ID
       
第二部分是词频
       
第三部分是词的位置
    4
、词的位置用:分割
   
   
例如:
    shingles=31=47466_1_2|1_1_6|1_1_1|2_1_5|67_1_1|903_1_3|17_1_5|1_3_4:6:11
   
表示词 shingles 的索引:
   
词:shingles
   
31 个文档包含 shingles 这个词
   
包含这个词的第一篇文档的ID47466
    shingles
的词频是1,出现 shingles 的位置是2
   
文档内容为:
    A better solution is to use shingles, which are compound tokens created
    from multiple adjacent tokens.
   
对文档内容进行分词并移除停用词之后的结果为:
    [solution, shingles, compound, tokens, created, multiple, adjacent, tokens]
   
   
包含这个词的第二篇文档的ID47466+1=47467
    shingles
的词频是1,出现 shingles 的位置是6
   
文档内容为:
    Lucene has a sandbox module that simplifies adding shingles to your index,
    described in section 8.3.2
   
对文档内容进行分词并移除停用词之后的结果为:
    [lucene, sandbox, module, simplifies, adding, shingles, index, section]
   
   
包含这个词的第八篇文档的ID47466+1+1+2+67+903+17+1=48458
    shingles
的词频是3,出现 shingles 的位置分别是4611
   
文档内容为:
    For example the sentence “please divide this sentence into shingles”
    might be tokenized into the shingles “please divide”, “divide this”,
    “this sentence”, “sentence into” and “into shingles”
   
对文档内容进行分词并移除停用词之后的结果为:
    [sentence, divide, sentence, shingles, tokenized, shingles, divide, divide, sentence, sentence, shingles]
   
   
这里需要注意的是位置不是和原文一一对应的,而是和去除停用词后的位置一一对应的
    停用词的定义看这里的链接
分词使用word分词提供的针对纯英文文本的分词器

   
    

时间: 2024-12-15 12:39:40

jsearch的索引文件结构的相关文章

基于lucene的案例开发:索引文件结构

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/42836309 前面我们已经介绍了非结构数据的检索过程以及lucene的数学模型,这篇博客就主要介绍一下lucene索引的文件结构,下图是lucene生成的索引实例: lucene索引结构是层次结构,主要有以下几个层次: 索引(Index) 在lucene中,一个索引是放在一个文件夹中的,上述实例中的所有文件就组成了lucene索引 段(Segment) 一个索引中可以有很多段,

【Lucene】Lucene 学习之索引文件结构

Lucene 索引文件结构 基本概念 索引(index) Lucene的索引由许多个文件组成,这些文件放在同一个目录下 段(segment) 一个Lucene的索引由多个段组成,段与段之间是独立的.添加新的文档时可以生成新的段,达到阈值(段的个数,段中包含的文件数等)时,不同的段可以合并. 在文件夹下,具有相同前缀的文件属于同一个段 segments.gen 和 segments_N(N表示一个具体数字,eg:segments_5)是段的元数据文件,他们保存了段的属性信息. 文档(documen

基于word分词提供的文本相似度算法来实现通用的网页相似度检测

实现代码:基于word分词提供的文本相似度算法来实现通用的网页相似度检测 运行结果: 检查的博文数:128 1.检查博文:192本软件著作用词分析(五)用词最复杂99级,相似度分值:Simple=0.968589 Cosine=0.955598 EditDistance=0.916884 EuclideanDistance=0.00825 ManhattanDistance=0.001209 Jaccard=0.859838 JaroDistance=0.824469 JaroWinklerDi

Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理

基于Lucene检索引擎我们开发了自己的全文检索系统,承担起后台PB级.万亿条数据记录的检索工作,这里向大家分享下Lucene底层原理研究和一些优化经验. 从两个方面介绍: 1. Lucene简介和索引原理 2. Lucene优化经验总结 1. Lucene简介和索引原理 该部分从三方面展开:Lucene简介.索引原理.Lucene索引实现. 1.1 Lucene简介 Lucene最初由鼎鼎大名Doug Cutting开发,2000年开源,现在也是开源全文检索方案的不二选择,它的特点概述起来就是

数据结构实践——索引文件

本文是针对[数据结构基础系列(11):文件]中的实践项目. [项目]索引文件 有若干学生的成绩数据如下,将这些数据保存到st数组中: 学号 姓名 年龄 性别 语文 数学 英语 1 陈华 20 男 78 90 84 5 张明 21 男 78 68 92 8 王英 20 女 86 81 86 3 刘丽 21 女 78 92 88 2 许可 20 男 80 83 78 4 陈军 20 男 78 88 82 7 马胜 21 男 56 67 75 6 曾强 20 男 78 89 82 基于这些数据,编程序

Lucene索引创建方法和步骤

在全文索引工具中,都是由这样的三部分组成 1.索引部分 2.分词部分 3.搜索部分 ---------------------------------- 索引创建域选项 ---------------------------------- Field.Store.YES或者NO(存储域选项) YES:表示会把这个域中的内容完全存储到文件中,方便进行还原[对于主键,标题可以是这种方式存储] NO:表示把这个域的内容不存储到文件中,但是可以被索引,此时内容无法完全还原(doc.get())[对于内容

索引的底层理解

最近看了很多文章,这里再补充一下对索引底层的理解,仅个人意见,有不对的,大家可以留言下,非常欢迎~ 关于什么是索引,索引的建立,索引不同存储引擎可以在之前的文章了解到请点击这里:http://www.cnblogs.com/houdashuai/p/6681680.html这次总结一下,重点说一下底层结构 索引一.索引的分类:二.创建表时会影响到索引的因素:三.使用SQL时会影响到索引的因素:四.根据索引的优缺点去概述一下索引的底层结构 一.索引的分类: 普通索引「INDEX」: 增加索引结构,

网络技术教程笔记(3)

操作系统 操作系统 0.操作系统概述 1.进程管理 11进程管理--进程的概念 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位.它由程序块.进程控制块(PCB)和数据块三部分组成. 进程和程序的区别:进程是程序的一次执行过程,没有程序就没有进程.程序是完成某个特定功能的一系列程序语句的集合,只要不被破坏,它就永远存在.程序是一个静态测试的概念,而进程是一个动态的概念,它由创建而产生,完成任务后因撤销而消亡:进程是程序进行资源分配和调度的独立单位,而程序不是. 1.

Linux面试题目(一)

第一次发帖,整理了一下Linux题目,答案不是标准的,欢迎讨论,进入各自理想的公司! 1.简述Apache两种工作模式,以及它们之间的区别.答:(1)prefork MPM使用多个子进程,每个子进程只有一个线程来处理一个http请求,直到这个TCP连接被释放.root主进程在最初建立startserver个子进程后,等待1秒钟,创建2个进程,再等待1秒钟,再创建4个进程,直到满足最小空闲进程的数量,这就是预派生的由来.这种模式可以不必在请求到来时再产生新的进程,从而提高了访问效率. (2)wor