DNN中搜索引擎原理——数据库分析篇

原创 2011年01月08日 17:25:00

DotNetNuke(以下简称DNN)中所采取的搜索方式,并不是我们通常所想象的直接再要查询的表中直接搜索。因为DNN中的模块是多种多样的,各数据表的形式和要查询的字段也是不一样,如果直接查询每一个表的内容是几乎不可能实现的。DNN中引入了一个SearchItem表,将各种各样的需要查询的内容,归结为查询条目的形式添加到该表中。同时还引出了一个SearchWord表,将需要查询的内容分解成一个个关键字,这样更能加快检索速度,而且还利于多关键字检索。在DNN搜索中还有一个小技巧:可以通过“key1 key2的形式进行多关键字检索,并且可以通过“key1+ key2-”形式明确指出是否必须保含某关键字,是否必须排除某关键字。

整个和搜索相关表的关系图如下:

从关系图上来看,只要在SearchWord表中找到指定关键字,通过SearchItemWord表,就能知道要查询的内容了。通过SearchItem表,就能确切知道是哪个模块了。

各表个字段的详细解释:

SearchCommonWords常用字/词组信息表(存储指定文化区域的常用字,在查询时输入这些字是不会返回结果的)

字段名

类型

含义

备注

CommonWordID

Int

常用字ID

主键

CommonWord

Nvarchar(255)

常用字

如:whereabout在英文中都属于常用字

Locale

Nvarchar(10)

所属文化区域

 

 

SearchIndexer索引Provider的程序集(这个表的数据好像没有用,在web.config中有设置

字段名

类型

含义

备注

SearchIndexerID

Int

ID

主键

SearchIndexerAssemblyQualifiedName

Char(200)

程序集

 

 

SearchItem模块内容搜索条目(将所有可能被搜索到的模块内容,通过定时调度的方式,将模块内容以搜索条目的形式保存,这样可加快搜索速度)

字段名

类型

含义

备注

SearchItemID

Int

搜索条目ID

主键

Title

Nvarchar(200)

标题

 

Description

Nvarchar(2000)

描述

 

Author

Int

作者Id

 

PubDate

Datetime

发布日期

 

ModuleId

Int

所属模块Id

与模块信息表(Modules)关联

SearchKey

Nvarchar(100)

搜索关键字

 

Guid

Varchar(200)

 

好像是指示模块中的一条记录

HitCount

Int

点击次数

 

ImageFileId

Int

 

 

 

SearchItemWord搜索关键字索引信息表(搜索条目和搜索关键字之间的关系)

字段名

类型

含义

备注

SearchItemWordID

Int

搜索关键字索引ID

主键

SearchItemID

Int

搜索条目Id

关联模块内容搜索条目表(SearchItem

SearchWordsID

Int

搜索关键字Id

关联搜索关键字信息表(SearchWordsID

Occurrences

Int

出现次数

关键字在指定搜索内容中的出现次数

 

SearchItemWordPosition搜索关键字在被搜索内容中出现的位置

字段名

类型

含义

备注

SearchItemWordPositionID

Int

ID

主键

SearchItemWordID

Int

搜索关键字索引ID

关联搜索关键字索引信息表(SearchItemWord

ContentPosition

Int

出现位置

 

 

SearchWord搜索关键字信息表(存储可供检索的关键字)

字段名

类型

含义

备注

SearchWordsID

Int

搜索关键字ID

主键

Word

Nvarchar(100)

搜索关键字

 

IsCommon

Bit

是否是常用字

 

HitCount

Int

点击次数

 

一个可以改进的存储过程:

查看获取查询结果的存储过程GetSearchResults,我们会发现必须完全匹配查找关键字才能查出所需的内容。问题就在“sw.Word = @Word”这一句上,也就是说如果一个模块中包含“DotNetNuke”这个内容,那么他输入“Nuke”是不会查出来的。将这一句改成“sw.Word  like '%' + @Word+'%'”就可以了(这是一个以效率换结果的方法)。具体修改方法见:http://www.cnblogs.com/esshs/archive/2005/08/12/213154.html

 

从数据表和所实现的功能上看,某些表的数据字段还没有用上,估计是DNN预留字段以便日后扩充。看完这篇文章的不知大家对DNN的查询功能是否有一个大概的了解。以后将继续针对如何通过各功能模块所实现的查询接口来填充SearchItem表;点击“查询”是如何工作的这些方面的问题来继续说明DNN搜索引擎原理。上文有任何讲解不正确的地方还请大家指出,以免误导他人。

 

 

http://www.cnblogs.com/esshs/archive/2005/08/15/215491.html

DNN中搜索引擎原理——数据库分析篇

 DotNetNuke(以下简称DNN)中所采取的搜索方式,并不是我们通常所想象的直接再要查询的表中直接搜索。因为DNN中的模块是多种多样的,各数据表的形式和要查询的字段也是不一样,如果直接查询每一个...
  • Softeer
  • Softeer
  • 2005年09月08日 13:19
  • 986

深度解析搜索引擎的原理结构

【说明】本文转自:http://www.mahaixiang.cn/seoyjy/246.html  深度解析搜索引擎的原理结构 对于我们这些做网站优化的来说,如果不懂搜索引擎的原理就来...
  • JXH_123
  • JXH_123
  • 2015年05月14日 21:45
  • 1291

DNN中搜索引擎原理——如何获取SearchItem

  上一篇《DNN中搜索引擎原理——数据库分析篇》讲到DotNetNuke(以下简称DNN)是将各模块的内容以SearchItem(查询条目)的形式存储到数据库中供检索,并通过索引关键字来加快对查询条...
  • Softeer
  • Softeer
  • 2005年09月08日 13:26
  • 1195

深度学习要多深,才能了解你的心?——DNN在搜索场景中的应用

DNN在搜索场景中的应用潜力,也许会比你想象的更大。 1.背 景 搜索排序的特征在于大量的使用了LR,GBDT,SVM等模型及其变种。我们主要在特征工程,建模的场景...
  • xiewenbo
  • xiewenbo
  • 2017年03月03日 17:31
  • 977

DNN深度神经网络 的原理 以及 使用

DNN  深度神经网络,就是 把原有的多层神经网络 扩展到深度学习里面,加上了BP 反馈,是的整理上 loss 收敛 直至不变,同时也有dropout 前面 有很多这个词 出现,dropout 是指...
  • lyc_yongcai
  • lyc_yongcai
  • 2017年06月13日 20:09
  • 750

搜索引擎爬虫工作原理-大揭秘(新手推荐看下)

搜索引擎的处理对象是互联网网页,日前网页数量以百亿计,所以搜索引擎首先面临的问题就是:如何能够设计出高效的下载系统,以将如此海量的网页数据传送到本地,在本地形成互联网网页的镜像备份。 网络爬虫即...
  • haolyj98
  • haolyj98
  • 2014年05月19日 14:54
  • 1164

ES: 架构及原理

Elasticsearch 是一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建,可以用于全文搜索,结构化搜索以及近实时分析。可以说Lucene是当今最先进,最高效的全功...
  • qq_17864929
  • qq_17864929
  • 2017年02月08日 10:24
  • 6615

为什么要用全文搜索引擎:全文搜索引擎 VS 数据库管理系统

正文一:Full Text Search Engines vs. DBMS  发表于2009年 正文二:Elasticsearch — A High-Performance Full-Text Se...
  • u013034889
  • u013034889
  • 2017年09月26日 15:11
  • 920

DNN学习随笔

1,DNN源于早起人工智能联结主义学派,试图通过模拟人脑的机制,来实现人工智能。 2,DNN在计算机领域的研究和实现可以追溯到50、60年代的感知器算法,感知器算法是一个单层阶跃激活函数的神经元,用...
  • mafeichao
  • mafeichao
  • 2015年12月20日 15:02
  • 1601

这就是搜索引擎(二)—检索排序、链接分析

这个系列的文章是一只试图通过产品角度出发去理解复杂庞大搜索引擎的汪写出来的,不足之处很多,欢迎广大技术、非技术同学阅读后指正错误,我们一起探讨共同进步。 本篇主要介绍搜索引擎的检索模型和搜索排...
  • youdianmuye
  • youdianmuye
  • 2016年08月12日 11:23
  • 968
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DNN中搜索引擎原理——数据库分析篇
举报原因:
原因补充:

(最多只允许输入30个字)