[搜索引擎研究和开发]纯手工编写操作I/O文件流的TAG网站标签系统(索引原理)...

news/2024/5/20 15:47:30/文章来源:https://blog.csdn.net/weixin_30781775/article/details/97811094
本人喜欢钻研技术,两年前就已经对搜索引擎的海量数据检索兴趣甚浓,而.NET中的类库功能强大,非常方便于快速编写代码以实现自己的想法。
        对于全文检索引擎,如何能够令其在极短的时间内查找到用户所需要的数据,对应付大量的并发访问极具意义。海量数据检索的核心在于索引的合理设计,以及对查询结果的整合和排序上。以本人所测试出来的经验,一个普通的二分查找算法,即使在一个高达数十G的索引文件里进行全索引检索,它所消耗的性能相对于结果集的整合和 排序几乎可以忽略不计。      
        本人于去年秋天,编写了一个单域、单词条的索引系统,用作开发搜索引擎的第一步,在此把源代码公布出来与诸位切磋。此组件支持单索引列、多列储存,目前只支持索引列的单条件(不支持AND、OR之类的组合关系)检索,不支持多列检索。

        该组件可用作网站的TAG系统,就是一个TAG对应若个文章或资源ID,通过对该TAG的筛选,把与之对应的资源ID列出。

        话不多说请看以下调用API。
        
        首先请下载源程序GeToolbox.IDXDB.rar到你本机,用Visual Studio 2005打开,编译成功后,就可以添加引用到你的项目中了。

        1、引用命名空间:
1None.gifusing GeToolbox.IDXDB;
2None.gifusing GeToolbox.IDXDB.Index;
          
         2、创建索引文件:
None.gif            //索引文件的保存路径
None.gif
            string path = @"F:\WebAspx\GeToolbox\tags.db";
None.gif            IDXDB.Index.CreateIndex db 
= new IDXDB.Index.CreateIndex(path, IDXDB.Index.EnumIndexType.Tree);
None.gif            
//创建一个数据列ArticleId用于存储索文章的ID号
None.gif
            db.Field.Add("ArticleId", EnumDataType.Int32);
None.gif            
//执行创建命令
None.gif
            db.Create();
None.gif            
//关闭索引文件流
None.gif
            db.Close();
 
       3、写入索引文件
 1None.gif            //加载索引架构
 2None.gif            IDXDB.Index.IndexSchema schema =  IDXDB.Index.IndexSchema.LoadIndex(path);
 3None.gif            //创建索引写入类的类例
 4None.gif            IDXDB.Index.WriteIndex wi = new IDXDB.Index.WriteIndex(schema);
 5None.gif            //测试,把10000个记录写入索引文件中
 6None.gif            for (int i = 0; i < 10000; i++)
 7ExpandedBlockStart.gifContractedBlock.gif            dot.gif{
 8InBlock.gif                //从索引中创建一个新的文档实例
 9InBlock.gif                Document doc = wi.NewDocument();
10InBlock.gif                //给索引列赋值
11InBlock.gif                doc.IndexKey.value = "" + i.ToString() + "个标签";
12InBlock.gif                //记录文章号,只存储,不能检索
13InBlock.gif                doc["ArticleId"= i.ToString();
14InBlock.gif                //添加到索引中
15InBlock.gif                wi.AddDocument(doc);
16ExpandedBlockEnd.gif            }

17None.gif            //关闭索引文件流
18                 wi..Close();

        4、索引检索:
None.gif            //加载索引架构
None.gif
            IDXDB.Index.IndexSchema schema =  IDXDB.Index.IndexSchema.LoadIndex(path);
None.gif            
//索引检索
None.gif
            ReaderIndex ri = new ReaderIndex(schema);
None.gif            Hits hits 
= ri.IndexSearch("第567个检签");
None.gif            
//遍历结果集合并打印
None.gif
            for (int i = 0; i < hits.Count; i++)
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif{
InBlock.gif                Console.WriteLine(
"索引号:" + hits.GetResult(i).Index);
InBlock.gif                Console.WriteLine(
"标签名称:" + hits.GetResult(i).IndexKey.value);
InBlock.gif                Console.WriteLine(
"文章号:" + hits.GetResult(i)["ArticleId"]);
ExpandedBlockEnd.gif            }

None.gif            
//关闭索引
None.gif
            schema.Close();

         基本测试代码就是上面的了,可能还存不少BUG,欢迎同行指正!

         关于.NET搜索引擎的开发,本人会在后续的文章中总结。敬请关注。

转载于:https://www.cnblogs.com/ieasp/archive/2007/08/15/856059.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_833482.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初次尝试python爬虫,爬取小说网站的小说。

本次是小阿鹏&#xff0c;第一次通过python爬虫去爬一个小说网站的小说。 下面直接上菜。 1.首先我需要导入相应的包&#xff0c;这里我采用了第三方模块的架包&#xff0c;requests。requests是python实现的简单易用的HTTP库&#xff0c;使用起来比urllib简洁很多&#xff0c;…

外部样式表 div居中不起作用_网站DIV+CSS教程培训教程X(HTMLCSS基础知识)一

XHTML CSS基础知识1&#xff09;文档类型<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3。org/TR/xhtml1/DTD/xhtml1-transitional.dtd">一定要保留这句话&#xff0c;删除它后可能引起某些样式表失效或其它意想不…

html适应手机显示不全_制作手机网站的重要性

移动互联网和PC互联网互相存在的时代&#xff0c;手机网站对于企业来说也非常的重要&#xff0c;在pc互联网时代网站的结构都只适应电脑端浏览&#xff0c;一旦放在更小屏幕的手机端打开就会页面错乱&#xff0c;文字不清晰&#xff0c;图片显示不全等问题&#xff0c;严重营销…

中的nginx 修改_如何使网站支持https访问?nginx配置https证书

购买SSL证书要想使用https访问你的网址&#xff0c;首先得拥有颁发的SSL证书。我使用的是免费版&#xff0c;有效期为一年&#xff0c;过期后再重新申请。申请SSL证书购买后&#xff0c;可在搜索框输入证书关键字进入到控制台。点击证书申请&#xff0c;按照提示填写完相关信息…

如何搭建基于Java的网站服务器

租赁主机 租赁主机,去主机服务商那里租赁一台主机,可以去阿里云,腾讯云,狗爹,华为云那里租,也可以租其他的主机,还可以用花生壳自己在家里搭建一个,总之,你需要一台具有固定唯一公网IP的电脑; 软件装备软件准备,需要准备的软件列表如下:CentOS-7-x86_64-DVD-1611.iso,FileZilla…

学生问我25-30K得面试题能不能帮忙,这我不得上,爬取某网站电影视频内容

前言 嗨喽&#xff01;大家好&#xff0c;这里是魔王~ 一般国外的电影电视剧&#xff0c;咋都找不到资源&#xff0c;很多人就对此束手无策了 这个时候python就很有用了&#xff0c;只要叫得出名字的&#xff0c;都可以几行代码搞定~ [本次内容]: Python爬取美剧网站电影视…

使用python 采集某网站全站美女图片 ,这么好看得图还不学起来(含完整源码)

本次目的&#xff1a; python 抓取某某站图片 本次亮点&#xff1a; 系统性分析页面多页面数据解析海量图片数据保存 开发环境 & 第三方模块&#xff1a; 解释器版本 >>> python 3.8代码编辑器 >>> pycharm 2021.2requests >>> pip install…

Python实现下载全球最大旅游网站Tripadvisor美食数据~

前言 嗨喽&#xff01;大家好&#xff0c;这里是魔王~ Tripadvisor 是全球领先的旅游网站&#xff0c; 主要提供来自全球旅行者的点评和建议 全面覆盖全球的酒店、景点、餐厅、航空公司 &#xff0c;以及旅行规划和酒店、景点、餐厅预订功能。 Tripadvisor及旗下网站在全球49个…

利用requests+pyquery/selenium爬取塔读网站的小说(解决JS渲染的问题)

文章目录一、环境依赖二、实现1. 基本原理2. selenium代码3. requestspyquery实现代码4. 总结一些问题三、源码下载一、环境依赖 安装requests,selenium,pyquery模块&#xff0c;并下载chromedriver,配置好环境。 #python3 pip install requests selenium pyquery我的seleniu…

Python采集某网站内容, m3u8内容下载

前言 嗨喽&#xff0c;大家好呐&#xff01;这里是魔王~ 环境使用: Python 3.8 <建议最好是和一样版本>Pycharm 模块使用: import requests >>> pip install requests 内置模块 你安装好python环境就可以了 import reimport json 如果安装python第三方…

python带你采集不可言说网站数据,并带你多重骚操作~

前言 嗨喽&#xff0c;大家好呀&#xff0c;这里是魔王呐~ 今天我们采集国内知名的shipin弹幕网站&#xff01; 这里有及时的动漫新番,活跃的ACG氛围,有创意的Up主。 大家可以在这里找到许多欢乐。 目录&#xff08;可根据个人情况点击你想看的地方&#x1f497;&#xff0…

【python】批量高速获取 Instagram,一个简单的外国分享网站

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ! Instagram&#xff08;照片墙&#xff09;是一款运行在移动端上的社交应用&#xff0c;以一种快速、美妙和有趣的方式将你随时抓拍下的图片彼此分享&#xff0c;Facebook公司旗下社交应用 本篇文章主要是如何“批量高速获取”I…

SQL注入-攻入Apple ID钓鱼网站实录

之前写的一篇利用SQL注入方式攻击钓鱼网站的文章&#xff0c;现在在博客园再分享一下。 下午&#xff0c;朋友发了一条朋友圈&#xff0c;内容大概这样&#xff1a; 大体就是她的iPhone丢了&#xff0c;收到了钓鱼短信&#xff0c;多么熟悉的套路&#xff0c;如下&#xff1a; …

CNAME关联githubPage域名及中文域名,创建个人网站

对于前端开发来说&#xff0c;部署一个自己的个人网站部署服务器等比较麻烦&#xff0c;如果只是做静态页面的展示GitHubPage完全够用&#xff0c;而且有300M免费的空间&#xff0c;完全满足需求。 首先你要有GitHubPage项目&#xff0c;具体怎么搭建不在这里说了,前端小白也可…

网站发布-noip

使用no-ip发布网站 本文使用no-ip进行域名的申请与绑定以及最后网站的发布。 用户注册 域名申请 选择My Account 选择Dynamic DNS 选择Create Hostname 创建网站名 输入自己想要的Hostname选择DomainRecord Type正常选A&#xff0c;其他的根据自己需求 创建完成 域名配…

高并发高流量网站架构

Web2.0的兴起&#xff0c;掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念&#xff0c;细分了网站功能和用户群&#xff0c;不仅成功的造就了一大批新生的网站&#xff0c;也极大的方便了上网的人们。但Web2.0以用户为导向的理念&#xff0c;使得新生的网站有…

制作个人音乐网站

转载于:https://www.cnblogs.com/big-bang3/p/8056870.html

谈谈用ASP.NET开发的大型网站有哪些架构方式(成本)

在上篇文章里(http://www.cnblogs.com/ms0017/archive/2011/07/26/2117676.html)&#xff0c;列举了国内外用ASP.NET开发的大型网站有哪些。最后提到了用.NET开发的大型网站和LAMP/JAVA平台的成本比较。其实在很多时候&#xff0c;收费的不一定就比免费的成本更高。因为开发一个…

大型网站系统架构的演化

前言 一个成熟的大型网站&#xff08;如淘宝、京东等&#xff09;的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性&#xff0c;它总是随着用户量的增加&#xff0c;业务功能的扩展逐渐演变完善的&#xff0c;在这个过程中&#xff0c;开发模式、技术架构、设计…

大型网站技术架构

架构演变第一步&#xff1a;物理分离webserver和数据库 最开始&#xff0c;由于某些想法&#xff0c;于是在互联网上搭建了一个网站&#xff0c;这个时候甚至有可能主机都是租借的&#xff0c;但由于这篇文章我们只关注架构的演变历程&#xff0c;因此就假设这个时候已经是托管…