精华内容
下载资源
问答
  • 为word文档建立索引

    2021-01-25 16:54:21
    如果这个总结知识自己看看而需要非常正式的话,我们的最直接想法就是使用word,非常快速方便。 问题 我们需要每一篇文章的总结写一个小标题,并建立索引,以方便我们快速定位查看该篇文章的总结。 方法 使用目录...

    背景

    有的时候,我们要在一个文档里面要写多篇文章的抽取式总结,并且最终的总结文档图文并用。如果这个总结知识自己看看而不需要非常正式的话,我们的最直接想法就是使用word,非常快速方便。

    问题

    我们需要为每一篇文章的总结写一个小标题,并建立索引,以方便我们快速定位查看该篇文章的总结。

    方法

    使用目录的方法,步骤如下。

    1.写好标题(红色)(注:标号1不写也可以)和总结(黑色)。

    在这里插入图片描述

    2.选中标题,点击样式,选中随便一个标题即可,因为“生成目录”功能只能识别下面四个标题。

    在这里插入图片描述

    3.对下面那个标题我们也要生成一个目录标题。而且由于两个标题是平等关系,所以指定的目录标题也要是一样的,我都选择“副标题”

    在这里插入图片描述

    4.在最前面生成目录,点击前面的空白处,点击“引用”,点击“目录”,点击自动生成目录(我选的第一个)。

    在这里插入图片描述

    5.效果如下,之后我们便可以点击目录处链接跳转到对应页面内容,非常方便。

    在这里插入图片描述

    展开全文
  • 看到主键索引索引类型是BTREE(二叉树)正是因为这个二叉树算法,让查询速度快很多,二叉树的原理,就是取最中间的一个数,然后把大于这个数的往右边排,小于这个数的就向左排,每次减半,然后依次类推,每次减半,...

    转自:http://blog.csdn.net/jaryle/article/details/52023295

    首先来看看表是否有索引的命令

    show index from 表名;

    8cf9e5803086cceed4e3f1d3f10e48db.png

    看到主键索引,索引类型是BTREE(二叉树)

    正是因为这个二叉树算法,让查询速度快很多,二叉树的原理,就是取最中间的一个数,然后把大于这个数的往右边排,小于这个数的就向左排,每次减半,然后依次类推,每次减半,形成一个树状结构图

    f265a4b89e05b5fb11a5579fdd324e1e.png

    例如上面的例子,我们不使用索引的话,需要查询11次才把编号为4的数据取出,如果加上索引,我们只需要4次就可以取出。

    如大家所知道的,MySQL目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。

    那么,这几种索引有什么功能和性能上的不同呢?

    FULLTEXT

    即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE

    ,ALTER TA

    展开全文
  • 为什么需要倒排索引

    千次阅读 2021-01-19 03:00:31
    FST讲一下就好了,希望自己回来添上去。...每种数据库都有自己要解决的问题(或者说擅长的领域),对应的就有自己的数据结构,而不同的使用场景和数据结构,需要不同的索引,才能起到最大化加快查询...

    FST能讲一下就好了,希望自己能回来添上去。嘿嘿~

    原文链接:http://bridgeforyou.cn/2019/07/23/Inverted-Index/

    以下全部非本人所写

    为什么需要倒排索引

    倒排索引,也是索引。

    索引,初衷都是为了快速检索到你要的数据。

    每种数据库都有自己要解决的问题(或者说擅长的领域),对应的就有自己的数据结构,而不同的使用场景和数据结构,需要用不同的索引,才能起到最大化加快查询的目的。

    对 Mysql 来说,是 B+ 树,对 Elasticsearch/Lucene 来说,是倒排索引。

    Elasticsearch 是建立在全文搜索引擎库 Lucene 基础上的搜索引擎,它隐藏了 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API,不过掩盖不了它底层也是 Lucene 的事实。

    Elasticsearch 的倒排索引,其实就是 Lucene 的倒排索引。

    为什么叫倒排索引

    在没有搜索引擎时,我们是直接输入一个网址,然后获取网站内容,这时我们的行为是:

    document -> to -> words

    通过文章,获取里面的单词,此谓「正向索引」,forward index.

    后来,我们希望能够输入一个单词,找到含有这个单词,或者和这个单词有关系的文章:

    word -> to -> documents

    于是我们把这种索引,成为inverted index,直译过来,应该叫「反向索引」,国内翻译成「倒排索引」,有点委婉了。

    现在思考一下,如果让你来设计这个可以通过单词,反向找到文章的索引,你会怎么实现?

    关于 Elasticsearch 这类「搜索引擎」要解决的问题、它和传统关系型数据库的区别等等,可以看我之前写的文章:为什么需要 Elasticsearch(文末有链接)

    倒排索引的内部结构

    首先,在数据生成的时候,比如爬虫爬到一篇文章,这时我们需要对这篇文章进行分析,将文本拆解成一个个单词。

    这个过程很复杂,比如“生存还是死亡”,你要如何让分词器自动将它分解为“生存”、“还是”、“死亡”三个词语,然后把“还是”这个无意义的词语干掉。这里不展开,感兴趣的同学可以查看文末关于「分析器」的链接。

    接着,把这两个词语以及它对应的文档id存下来:

    word documentId

    生存 1

    死亡 1

    接着爬虫继续爬,又爬到一个含有“生存”的文档,于是索引变成:

    word documentId

    生存 1,2

    死亡 1

    下次搜索“生存”,就会返回文档ID是 1、2两份文档。

    然而上面这套索引的实现,给小孩子当玩具玩还行,要上生产环境,那还远着。

    想想看,这个世界上那么多单词,中文、英文、日文、韩文 … 你每次搜索一个单词,我都要全局遍历一遍,很明显不行。

    于是有了排序,我们需要对单词进行排序,像 B+ 树一样,可以在页里实现二分查找。

    光排序还不行,你单词都放在磁盘呢,磁盘 IO 慢的不得了,所以 Mysql 特意把索引缓存到了内存。

    你说好,我也学 Mysql 的,放内存,3,2,1,放,哐当,内存爆了。

    哪本字典,会把所有单词都贴在目录里的?

    所以,上图:

    309ad6370f0f395096c5e267c97ab70c.png

    Lucene 的倒排索,增加了最左边的一层「字典树」term index,它不存储所有的单词,只存储单词前缀,通过字典树找到单词所在的块,也就是单词的大概位置,再在块里二分查找,找到对应的单词,再找到单词对应的文档列表。

    当然,内存寸土寸金,能省则省,所以 Lucene 还用了 FST(Finite State Transducers)对它进一步压缩。

    FST 是什么?这里就不展开了,这次重点想聊的,是最右边的 Posting List 的,别看它只是存一个文档 ID 数组,但是它在设计时,遇到的问题可不少。

    Frame Of Reference

    原生的 Posting List 有两个痛点:

    如何压缩以节省磁盘空间

    如何快速求交并集(intersections and unions)

    先来聊聊压缩。

    我们来简化下 Lucene 要面对的问题,假设有这样一个数组:

    [73, 300, 302, 332, 343, 372]

    如何把它进行尽可能的压缩?

    Lucene 里,数据是按 Segment 存储的,每个 Segment 最多存 65536 个文档 ID, 所以文档 ID 的范围,从 0 到 2^32-1,所以如果不进行任何处理,那么每个元素都会占用 2 bytes ,对应上面的数组,就是 6 * 2 = 12 bytes.

    怎么压缩呢?

    压缩,就是尽可能降低每个数据占用的空间,同时又能让信息不失真,能够还原回来。

    Step 1:Delta-encode —— 增量编码

    我们只记录元素与元素之间的增量,于是数组变成了:

    [73, 227, 2, 30, 11, 29]

    Step 2:Split into blocks —— 分割成块

    Lucene里每个块是 256 个文档 ID,这样可以保证每个块,增量编码后,每个元素都不会超过 256(1 byte).

    为了方便演示,我们假设每个块是 3 个文档 ID:

    [73, 227, 2], [30, 11, 29]

    Step 3:Bit packing —— 按需分配空间

    对于第一个块,[73, 227, 2],最大元素是227,需要 8 bits,好,那我给你这个块的每个元素,都分配 8 bits的空间。

    但是对于第二个块,[30, 11, 29],最大的元素才30,只需要 5 bits,那我就给你每个元素,只分配 5 bits 的空间,足矣。

    这一步,可以说是把吝啬发挥到极致,精打细算,按需分配。

    以上三个步骤,共同组成了一项编码技术,Frame Of Reference(FOR):

    ddeeb955a934b75203a8ad812287f314.png

    Roaring bitmaps

    接着来聊聊 Posting List 的第二个痛点 —— 如何快速求交并集(intersections and unions)。

    在 Lucene 中查询,通常不只有一个查询条件,比如我们想搜索:

    含有“生存”相关词语的文档

    文档发布时间在最近一个月

    文档发布者是平台的特约作者

    这样就需要根据三个字段,去三棵倒排索引里去查,当然,磁盘里的数据,上一节提到过,用了 FOR 进行压缩,所以我们要把数据进行反向处理,即解压,才能还原成原始的文档 ID,然后把这三个文档 ID 数组在内存中做一个交集。

    即使没有多条件查询, Lucene 也需要频繁求并集,因为 Lucene 是分片存储的。

    同样,我们把 Lucene 遇到的问题,简化成一道算法题。

    假设有下面三个数组:

    [64, 300, 303, 343]

    [73, 300, 302, 303, 343, 372]

    [303, 311, 333, 343]

    求它们的交集。

    Option 1: Integer 数组

    直接用原始的文档 ID ,可能你会说,那就逐个数组遍历一遍吧,遍历完就知道交集是什么了。

    其实对于有序的数组,用跳表(skip table)可以更高效,这里就不展开了,因为不管是从性能,还是空间上考虑,Integer 数组都不靠谱,假设有100M 个文档 ID,每个文档 ID 占 2 bytes,那已经是 200 MB,而这些数据是要放到内存中进行处理的,把这么大量的数据,从磁盘解压后丢到内存,内存肯定撑不住。

    Option 2: Bitmap

    假设有这样一个数组:

    [3,6,7,10]

    那么我们可以这样来表示:

    [0,0,1,0,0,1,1,0,0,1]

    看出来了么,对,我们用 0 表示角标对应的数字不存在,用 1 表示存在。

    这样带来了两个好处:

    节省空间:既然我们只需要0和1,那每个文档 ID 就只需要 1 bit,还是假设有 100M 个文档,那只需要 100M bits = 100M * 1/8 bytes = 12.5 MB,比之前用 Integer 数组 的 200 MB,优秀太多

    运算更快:0 和 1,天然就适合进行位运算,求交集,「与」一下,求并集,「或」一下,一切都回归到计算机的起点

    Option 3: Roaring Bitmaps

    细心的你可能发现了,bitmap 有个硬伤,就是不管你有多少个文档,你占用的空间都是一样的,之前说过,Lucene Posting List 的每个 Segement 最多放 65536 个文档ID,举一个极端的例子,有一个数组,里面只有两个文档 ID:

    [0, 65535]

    用 Bitmap,要怎么表示?

    [1,0,0,0,….(超级多个0),…,0,0,1]

    你需要 65536 个 bit,也就是 65536/8 = 8192 bytes,而用 Integer 数组,你只需要 2 * 2 bytes = 4 bytes

    呵呵,死板的 bitmap。可见在文档数量不多的时候,使用 Integer 数组更加节省内存。

    我们来算一下临界值,很简单,无论文档数量多少,bitmap都需要 8192 bytes,而 Integer 数组则和文档数量成线性相关,每个文档 ID 占 2 bytes,所以:

    8192 / 2 = 4096

    当文档数量少于 4096 时,用 Integer 数组,否则,用 bitmap.

    69a9879ae2310fddf00374c6523914c5.png

    这里补充一下 Roaring bitmaps 和 之前讲的 Frame Of Reference 的关系。

    Frame Of Reference 是压缩数据,减少磁盘占用空间,所以当我们从磁盘取数据时,也需要一个反向的过程,即解压,解压后才有我们上面看到的这样子的文档ID数组:[73, 300, 302, 303, 343, 372] ,接着我们需要对数据进行处理,求交集或者并集,这时候数据是需要放到内存进行处理的,我们有三个这样的数组,这些数组可能很大,而内存空间比磁盘还宝贵,于是需要更强有力的压缩算法,同时还要有利于快速的求交并集,于是有了Roaring Bitmaps 算法。

    另外,Lucene 还会把从磁盘取出来的数据,通过 Roaring bitmaps 处理后,缓存到内存中,Lucene 称之为 filter cache.

    升华与总结

    文章的最后,如果来一段话总结(zhuang)升华(bi)一下,这篇文章就会得高分。

    有什么总结,可以拔高这篇文章的高度呢?

    首先,你会发现,很多业务上、技术上要解决的问题,最后都可以抽象为一道算法题,复杂问题简单化。

    呃,这个“华”,升的还不够。

    另一个具有高度的“华”,其实在开头已经讲出来了:

    每种数据库都有自己要解决的问题(或者说擅长的领域),对应的就有自己的数据结构,而不同的使用场景和数据结构,需要用不同的索引,才能起到最大化加快查询的目的。

    这篇文章讲的虽是 Lucene 如何实现倒排索引,如何精打细算每一块内存、磁盘空间、如何用诡谲的位运算加快处理速度,但往高处思考,再类比一下 Mysql,你就会发现,虽然都是索引,但是实现起来,截然不同。

    这个往细讲,又是一篇文章:如此不同,如此成功 —— B+ 树索引 vs 倒排索引

    标题都想好了,就看各位爷了,点赞超 50 就写 …

    可能没机会写了,那就 …

    留个作业吧

    知识要融合起来看才有意思。

    来,放大招了,两个问题:

    Lucene 为什么不用 b+ 树来搜索数据?

    Mysql 为什么不用 倒排索引来检索数据?

    附上两张图:

    2a5f391267e3db34d598b461bc65de01.png

    309ad6370f0f395096c5e267c97ab70c.png

    展开全文
  • 解决endnotes给word文件添加索引失败问题 之前按正常的操作,通过endnotes向word文档添加索引,文档下方无法出现索引列表。弄了半天都没改好,可能是因为软件是wps而不是office? 后来重新使用了一种设置,才成功。...

    解决endnotes给word文件添加索引失败问题

    之前按正常的操作,通过endnotes向word文档添加索引,文档下方无法出现索引列表。弄了半天都没改好,可能是因为软件是wps而不是office?

    后来重新使用了一种设置,才成功。在此进行记录。

    失败的做法:

    原文档:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mi7VQWbq-1628667365858)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210407193154602.png)]

    将endnotes的文献索引直接拖入word:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tImNxvI2-1628667365862)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210407193310317.png)]

    可见文献中显示了索引

    设置合适的style,点击更新,word文档无变化,下方没有我们想要的参考文献列表:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l0OuycsF-1628667365863)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210407193507826.png)]

    成功的做法:

    先选择对应文献,再点击需要添加的文字部分,选择insert citation

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nkRUfS8W-1628667365866)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210407193736284.png)]

    选择insert selected citation,则可看到如下效果:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5gNNIb3s-1628667365869)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210407194007244.png)]

    说明添加成功。

    设置不同的style,也可以看到不同的索引效果哦:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZTSrR0Ti-1628667365870)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210407194151139.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e76dEfvq-1628667365872)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210407194120129.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E9Gt6bec-1628667365873)(C:\Users\YUANMU\AppData\Roaming\Typora\typora-user-images\image-20210407194105073.png)]

    码字不易,都看到这里了不如点个赞哦~
    我是【豆干花生】,你的点赞+收藏+关注,就是我坚持下去的最大动力~

    在这里插入图片描述

    展开全文
  • 思路 首先我们要知道,目录跟随标题走。你要不想变请确定目录变动后再改目录格式。...保存后选中标题手动加粗,然后目录样式取消加粗,再重新生成/更新目录即可实现 加粗前: 加粗后: 更新/插入目录: ...
  • Clustered Index Storage聚簇索引从根本上与所有其他索引的工作方式完全相同 - 它们存储称为B-Tree的结构的变体 . 它们存储相同的文件,格式与SQL Server的所有其他表格相同 .The Concept退一步思考您正在...
  • 缘由是他从来都使用空格来e68a84e8a2ad3231313335323631343130323136353331333433626561作为分词的分隔符,而对于中文来讲,显然空格就合适,需要针对中文语义进行分词。这,从MySQL5.7开始,MySQL内置了ngram...
  • 比如文档存在表1-1,表1-2,表1-3,表1-4,当删除题注表1-2后,表1-3和表1-4的数字并会发生变化,这个时候就需要手动更新已删除的题注后边的所有题注,使用上述方法比较简单〜 搬运自: http:/
  • 一、历史背景 Oracle数据库的全文检索技术...Oracle Text是Oracle9i采用的新名称,Oracle8/8i它被称作Oracle interMedia Text,Oracle8以前它的名称是Oracle ConText Cartridge。二、Oracle Text 索引文档时...
  • C语言实现简单的倒排文件索引来源:http://blog。csdn。net/lansatiankongxxc/article/details/8314996inver。h文件#ifndefINVERT_FILE_H#defineINVERT_FILE_H#include#includetypedefstruct_invertfile_{...
  • phpmyadmin查看你的数据库,设置主键、选择唯一索引,是否允许重复与数据类型无关。关键字UNIQUE把它定义一个唯一索引.唯一性索引 和“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须...
  • Word003自己制作目录(非自动生成目录)时目录的省略号其实不是真正的省略号,手动输入的省略号会造成页码不能很好对齐,今天,学习啦小编就向大家介绍一下word2003自带的方法,不会使用word自动生成目录的可以参考...
  • word错误,定义的索引

    2021-12-10 16:11:36
    word导出时,目录出现定义的索引错误,Ctrl+F11 锁定域可以解决 Ctrl+F2 选择“文件”菜单上的“打印预览”命令。 Ctrl+F3 剪切至“图文场” Ctrl+F4 关闭窗口。 Ctrl+F5 恢复文档窗口大小(例如,最大化以后)。 ...
  • 我的作业要求我遍历字符串的每个字母,偶数索引为大写,奇数索引为小写。 它应该保留所有标点符号或数字不变,并且应该以偶数索引更改每个字母的大小写。 这意味着,如果字母最初是大写字母,则应将其转换小写...
  • 考试大编辑整理: VFP建立索引文件的方法1.命令建立索引命令格式是:INDEX ON(索引表达式)TO][FOR(条件)][c()MPACT][ASCENI)ING l I)ESCENI)ING][uNIQIjE][ADDITIVE]该命令对当前表建立一个索引文件或增加...
  • 字符串是可以被 索引 (下标访问)的,第一个字符索引是 0。单个字符并没有特殊的类型,只是一个长度一的字符串:>... word[5] # 位置5的字符'n'索引也可以负数,这种会从右边开始数:>>>>>...
  • 检测PHP-SDK的运行条件(查看是否支持XunSearch) $prefix/sdk/php/util/RequiredCheck.php $prefix #替换成你的安装目录使用 XunSearch(讯搜)有很多种使用方法 和 更新索引的方法;搜索语法• 查询语句和流行的搜索...
  • 关系数据库索引是一种单独的、物理的对数据库表一列或多列的值进行排序的一种存储结构,它是某个表一列或若干列值的集合和相应的指向表物理标识这些值的数据页的逻辑指针清单。更通俗的说,数据库索引的...
  • 4.在使用分组和排序子句进行数据检索时,可以显著减少查询分组和排序的时间。ps:总结就2点,1.查询速度快,2.数据合法性、唯一性。缺点1.索引需要占物理空间。2.当对表的数据进行增加、删...
  • 打包pythonexe
  • mysql有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,此列出三种新建索引的方法mysql 添加索引的三种方法1.1 新建表添加索引① 普通索引...
  • 以下ES、ES_head都部署linux系统中一、创建索引库ES的索引库是一个逻辑概念,它包括了分词列表及文档列表,同一个索引存储了相同类型的文档。它就相当于MySQL的表,或相当于Mongodb的集合。关于索引这个语...
  • 工作碰到这样一个情况:有多个关键词存在文本文档txt,想查找下某个较大的word文档中,这些关键词是否都含有,没有关键词的显示出来。因为关键词比较多,并且这个工作还是经常会有的,这个情况我试着Python3...
  • 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这...
  • 怎样使word页码的总页数包括封面和目录(文章正文包含很多节...一般的方法都是插入分隔符的方法把文档分为二节,断开节间的链接,再分别设置页码即可。就如上面的朋友回答说的一样。会的话是很方便的。所以...
  • MySQL中索引使用

    2021-02-02 20:16:08
    索引的定义MySQL索引是一个排序的列表,这个索引中存在这个索引的值和这个索引所在行的物理地址,使用索引可以加快查询速度是因为,使用索引后可以不用扫描全表来定位某行的位置,而是通过索引列表直接跳转...
  • 全文检索 MySQL 就是一个 FULLTEXT 类型索引。FULLTEXT 索引用于 MyISAM 表,可以 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX CHAR、 VARCHAR 或 TEXT 列上创建。对于大的数据库,将数据装载...
  • 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到...
  • 分析了如何避免MySQL无法使用,如何使用EXPLAIN分析查询语句,如何优化MySQL索引的应用。本文摘自《MySQL 5权威指南》(3rd)的8.9节。索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,643
精华内容 49,057
关键字:

为什么在word中更新索引不能用