WEBUS2.0 In Action - 索引操作指南(1)

本文深入解析了WEBUS2.0中的索引机制,包括索引类、索引过程、文档保存、分析、编制索引、排序及额外处理等关键环节。通过实例展示了如何使用IIndexable和IQueriable接口对索引进行写和读操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇:WEBUS2.0 In Action - 解析索引文件结构(2) | 下一篇:WEBUS2.0 In Action - 索引操作指南(2) 

1. 索引类
WEBUS中用于索引的类(接口)主要有以下几个:
IIndexable(接口)
IQueriable(接口)
IndexManager(实现IIndexable接口和IQueriable接口)
IndexOpenMode
这几个接口和类中,IndexManager是核心,它实现了IIndexable和IQueriable。通常情况下,我们使用IIndexable来对索引进行写操作;而使用IQueriable来对索引进行读操作。
利用IIndexable对象,我们可以新建一个索引或者打开现有索引:

// Create new index:
IIndexable writer1  =   new  IndexManager(); 
writer1.New(
@" F:\Index1 " ); 

// Open an index for writing
IIndexable writer2  =   new  IndexManager(); 
writer2.Open(
@" F:\Index2 " , IndexOpenMode.Write); 

IndexOpenMode是一个枚举型,有两个项:
IndexOpenMode.Read:以只读方式打开,一般用于构造一个IQueriable对象;
IndexOpenMode.Write:以读写方式打开,一般用于构造一个IIndexable对象。

2. 理解索引过程
在前面的章节中已经介绍过WEBUS索引的基本文件结构了,现在来讲讲数据的处理流程。
2.1 保存文档(Document,简称Doc)
早在“编制索引”一节中就已经介绍过,WEBUS中所有数据都是以Doc对象的形式添加到索引中的。在编制索引时,第一个操作步骤就是将Doc序列化之后写入到索引文件中。当然这个步骤是可以控制的,如果我们不想将Doc中某个字段写入到索引中,只需要将这个Field的FieldAttributes设置为UnStore就行了:

Document doc  =   new  Document();
  //对HTML字段编制索引,但是不保存内容
doc.Fields.Add(
new  Field( " HTML " , html, FieldAttributes.Index  |  FieldAttributes.UnStore)); 

2.2 分析
当Doc保存之后,WEBUS立即就对有需要的字段进行分析(由FieldAttributes.Analyse属性指定)。分析的过程就是将Field的原始Value切割或者转化成很多小块的语汇单元(Token),然后按照顺序将语汇单元输出到下个步骤之中;如果字段无需分析,则WEBUS会将整个Field.Value当做一个Token编制索引。
在分析的过程中,WEBUS会用到分析器(Analyzer)的进行处理。关于Analyzer我将在后面的章节中对其进行详细描述。

2.3 编制索引
随着分析的进行,WEBUS会及时的将得到的Token与Doc List对应起来,添加到倒排索引(以Hash表为存储结构)中。这个过程实际上分为两步:
a. 首先将Token-Doc List信息添加到内存中的索引中;
b. 然后将内存中的满足条件的索引项Dump到BHS索引(一种磁盘上的索引格式)中。
对于步骤b,我们可以通过DumpSize和DumpDocs来控制Dump过程。
DumpSize指DocList中文档的个数Count。如果Count大于等于DumpSize,就将索引项从内存Dump到BHS索引中;
DumpDocs指从上次Dump开始,添加到索引中的Document的个数Count。如果Count大于DumpDocs,就检查有没有需要Dump的索引项。

2.4 排序
如果WEBUS遇到被指定了FieldAttributes.Sort属性Field,就会按照这个字段的值对其进行排序,并且将排好顺序之后的DocId保存在一个序列文件中。以便在日后需要对范围进行搜索的时候利用二分查找法对其进行快速检索。

2.5 其他处理
除了序列化文档、编制倒排索引、排序之外,WEBUS还做了很多额外的工作。比如对关键词和被删除Doc的记录和检索等等。

相关信息及WEBUS2.0 SDK下载:继续我的代码,分享我的快乐 - WEBUS2.0

 

转载于:https://www.cnblogs.com/iamzyf/archive/2008/03/06/1069970.html

内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值