- 博客(17)
- 收藏
- 关注
原创 山东大学暑期实训一20220620
基础的blender的方法,一些使用工具的方法:首先是镜像修改器 在一侧建模,另一侧也会体现,可以使拓扑结构更加一致细分表面修改器,可以使建出的模型更加平滑在blender中的基本操作:中键:转动;shift+中键:左右平移;ctrl+中键:放大;shift+A:菜单左下角有刚刚已经按下的操作键从渲染和基元开始:数字键盘:1-正视图 3-右视图 7-顶视图在对象模式中 g可以使对象移动 r可以使对象旋转在编辑模式中 可以选中1.点 2.线 3.面长按shift可以选中多个面在Mirror中(镜像状态下)GX
2022-06-20 16:45:12 84 1
原创 lucene代码分析13
2021SC@SDUSC 写入索引域 代码为: DocInverter.flush(Map<DocFieldConsumerPerThread,Collection>, SegmentWriteState) //写入倒排表及词向量信息 –> consumer(TermsHash).flush(childThreadsAndFields, state); //写入标准化因子 –> endConsumer(NormsWriter).flush(endChildThreadsAndFiel
2021-12-27 03:19:47 70
原创 lucene代码分析12
2021SC@SDUSC 按照基本索引链的结构将索引结果写入段 代码为: consumer(DocFieldProcessor).flush(threads, flushState); //回收 fieldHash,以便用于下一轮的索引,为提高效率,索引链中的对象是被复用的。 Map<DocFieldConsumerPerThread, Collection> childThreadsAndFields = new HashMap<DocFieldConsumerPerThread, Co
2021-12-27 03:17:36 63
原创 lucene代码分析11
2021SC@SDUSC 按照基本索引链关闭存储域和词向量信息 代码为: closeDocStore(); flushState.numDocsInStore = 0; 其主要是根据基本索引链结构,关闭存储域和词向量信息: consumer(DocFieldProcessor).closeDocStore(flushState); consumer(DocInverter).closeDocStore(state); consumer(TermsHash).closeDocStore(state);
2021-12-27 03:15:05 201
原创 lucene代码分析10
2021SC@SDUSC 得到要写入的段名 代码: SegmentInfo newSegment = null; final int numDocs = docWriter.getNumDocsInRAM();//文档总数 String docStoreSegment = docWriter.getDocStoreSegment();//存储域和词向量所要要写入的段 名,"_0" int docStoreOffset = docWriter.getDocStoreOffset();//存储域和词向量要写入的
2021-12-27 03:12:32 181
原创 lucene代码分析9
2021SC@SDUSC 跳跃表规则 (Skip list) 为了提高查找的性能,Lucene 在很多地方采取的跳跃表的数据结构。 跳跃表(Skip List)是如图的一种数据结构,有以下几个基本特征: 元素是按顺序排列的,在 Lucene 中,或是按字典顺序排列,或是按从小到大顺序排列。 跳跃是有间隔的(Interval),也即每次跳跃的元素数,间隔是事先配置好的,如图跳跃表 的间隔为 3。 跳跃表是由层次的(level),每一层的每隔指定间隔的元素构成上一层,如图跳跃表共有 2 层。 需要注意一
2021-12-27 03:09:34 253
原创 lucene分析8
2021SC@SDUSC 或然跟随规则 Lucene 的索引结构中存在这样的情况,某个值 A 后面可能存在某个值 B,也可能不存在,需 要一个标志来表示后面是否跟随着 B。 一般的情况下,在 A 后面放置一个 Byte,为 0 则后面不存在 B,为 1 则后面存在 B,或者 0 则后面存在 B,1 则后面不存在 B。 但这样要浪费一个 Byte 的空间,其实一个 Bit 就可以了。 在 Lucene 中,采取以下的方式:A 的值左移一位,空出最后一位,作为标志位,来表示后 面是否跟随 B,所以在这种情况下,
2021-12-27 03:07:52 236
原创 lucene代码分析6
2021SC@S lucene索引结构是有层次结构的,具体如下: (1)索引 : 索引全部是是放在同一个文件夹中,这些内容构成了一个完整的lucene索引(2)段(segment):一个索引可以包括很多段,段与段之间是独立的,新添加新文档可以生成新的段,段与段可以合并具有相同前缀文件的属于同一段,如图中共两个段"_0","_1";segments.gen 和 segment_5是段的数据文件,也即它们保存了段的属性信息(3)文档(document):文档是建立索引的基本单位,不同的文档保存在不同的段中,一个
2021-12-11 23:25:36 60
原创 lucene7
2021SC@SDUSC 然而当我们要打开一个索引的时候,我们必须要选择一个来打开。Lucene 采取以下过程: 其 一 , 在 所 有 的 segments_N 中 选 择 N 最 大 的 一 个 。 基 本 逻 辑 参 照 SegmentInfos.getCurrentSegmentGeneration(File[] files) , 其 基 本 思 路 就 是 在 所 有 以 segments 开头,并且不是 segments.gen 的文件中,选择 N 最大的一个作为 genA。 其二,打开 se
2021-12-10 08:31:13 73
原创 lucene分析7
一个索引(Index)可以同时存在多个 segments_N(至于如何存在多个 segments_N,在描述完详细信息之后会举例说明),然而当我们要打开一个索引的时候,我们必须要选择一个来打开。Lucene 采取以下过程: 其 一 , 在 所 有 的 segments_N 中 选 择 N 最 大 的 一 个 。 基 本 逻 辑 参 照 SegmentInfos.getCurrentSegmentGeneration(File[] files) , 其 基 本 思 路 就 是 在 所 有 以 segmen
2021-12-10 02:11:11 170
原创 lucene分析6
2021SC@SDUSC lucene索引结构是有层次结构的,具体如下: (1)索引 : 索引全部是是放在同一个文件夹中,这些内容构成了一个完整的lucene索引 (2)段(segment):一个索引可以包括很多段,段与段之间是独立的,新添加新文档可以生成新的段,段与段可以合并 具有相同前缀文件的属于同一段,如图中共两个段"_0","_1"; segments.gen 和 segment_5是段的数据文件,也即它们保存了段的属性信息 (3)文档(document):文档是建立索引的基本单位,不同的文档保存
2021-12-10 02:00:21 73
原创 lucene代码分析5
2021SC@SDUSC lucene调用链自上而下,大概可以分三层, 前四个步骤是逻辑调用层,IndexWriter类将整个Document作为参数调用addDocument方法, IndexWriter下的DocWriter再调用对应的updateDocument去更新文档,最后从线程池种拉出一个DocWriterPerThread对象来执行最终的updateDocument逻辑,再这一层实际上并没有什么实质性地发生 中间一层是索引链的处理逻辑,DefaultIndexingChain是一个非常核心的
2021-11-29 03:53:25 130
原创 lucene代码分析4
Lucene作为一个检索引擎主要保存七种类型的数据: PostingList,TermDict,StoredField ,DocValue, TermVector, Norms,PointValue, 前四种是所有检索引擎都会保存的数据,后三种是Lucene特有的数据,实际上,StoredField就是我们所说的正排数据,它是一种行式存储,类似于mysql中的行数据,StoredField承担存储最原始的数据的角色重要性不言而喻,之所以先讲这块也是因为它最简单,但是在讲StoredField的时候会包含很多
2021-11-29 03:51:20 162
原创 lucene代码分析
2021SC@SDUSC lucene读取过程 Analyzer analyzer = new StandardAnalyzer(); // Store the index in memory: Directory directory = new RAMDirectory(); // To store an index on disk, use this instead: //Directory directory = FSDirectory.open("/tmp/test
2021-11-09 14:42:49 104
原创 lucene分析(2)
2021SC@SDUSC 对于不需要在搜索反向索引时用到,但在搜索结果处理时需要的位置、偏移量、附加数据(payLoad)的字段,我们可以单独为该字段存储(文档id词项向量)的正向索引。 packagecom.study.lucene.indexdetail; importjava.io.File; importjava.io.IOException; importorg.apache.lucene.analysis.Analyzer; importorg.apache.lu...
2021-10-17 21:51:45 90
原创 lucene中document的相关分析
2021SC@SDUSC document文档是要索引的数据记录,文档在lucene中的表示,是索引,搜索的基本单元。一个document由多个字段Field构成,就好比数据库的字段与记录。 而Field字段是由三个部分组成的,分别是字段名,字段值和字段类型构成,字段值可以是文本,二进制值或者是数值 我们收集数据创建document对象来为其创建索引,数据的属性中只有被搜索和被展示的字段需要存储在document中,而且只有被搜索的字段才被索引,需要被展示的字段才被存储。字段会按照查询方式..
2021-10-10 21:05:41 344
原创 lucene分析
2021SC@SDUSC 任务描述:本人主要负责分析document和util俩个部分的代码,第一周我们首先配置环境让代码跑起来 lucene功能描述:Lucene是apache软件基金会4jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或..
2021-09-29 19:03:47 61
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人