ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DNN中搜索引擎原理——数据库分析篇

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

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

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

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

各表个字段的详细解释:

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

字段名

类型

含义

备注

CommonWordID

Int

常用字ID

主键

CommonWord

Nvarchar(255)

常用字

如:where,about在英文中都属于常用字

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:

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-412164/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5769002