电子商务网站-全文检索系统总体介绍

转载 2012年03月21日 09:58:15

有很久没有更新了,过去的一年,升级TSE4.0系统把大家累坏了,最近给新员工准备了一个培训ppt,贴在这里吧。csdn的图片上传越改越糟糕,连续传2张图片就不行了,新图片不能和删除的图片同名,估计是删除数据延迟的问题,体验不爽。好多图片都传不上去

全文检索的一些概念

       文档:搜索引擎最小信息检索单元。对于网页搜索一条文档理解为一个网页,对paipai网搜索,一条文档表示一个完整的商品信息

       倒排索引:关键词到文档编号的映射。

{pair<KeyWord,docid1,docid2…..>}

       索引切换:将索引服务器中生成好的索引数据拷贝到搜索服务器

 

全文检索系统总体架构

 

 

 

       Web: 使用TWS服务器,接受用户请求,处理业务逻辑,渲染页面,80%以上的产品需求集中在这里

       Commserver:协议分发服务器,将不同的请求发送到不同的后台

       CacheServer:缓存服务器,协议级Cache,支持即时删除,LRU淘汰,有70%左右的命中率

       UnionServer:聚合服务器,将分布式搜索系统返回的检索结果合并

       SearchKernel:检索服务器,负责处理搜索请求

       DocServer:文档服务器,负责存储具体的文档信息,返回完整的文档信息给用户

       IndexServer:索引服务器,负责生成索引

       TransferServer:中转服务器,负责综合排序,将商城数据格式化为搜索的标准数据格式

 

 

全文检索的处理流程

       用户发送搜索请求,Web层对用户的输入条件进行过滤,进行同义词、直达…处理,将处理后的请求发送到commserver

       Commserver根据Appid对请求分发到Cache或者其他后台,负载均衡

       Cache收到请求后判断是否命中,命中则返回,不命中则转发给UnionServer,同时cache存储返回结果

       UnionServer收到请求后,负载均衡,分发给各个SearchKernel并行检索

       SearchKernel检索后,返回排好序的DocId集合

       Union对各个后台返回的Docid集合进行合并

       Union把合并后的结果集发送到DocSvr,获取完整文档信息,返回给CacheSvr

SearchKernel的处理流程一

       SearchKernel收到用户请求,解析出查询串

       针对查询串进行分析,生成语法树

       对语法树每个节点,进行分词查询倒排索引

       对查询出的多个倒排索引按照语法关系,进行逻辑运算

       按照DocId进行其他查询条件的过滤

       对DocId进行排序

       将DocId返回给UnionSvr

SearchKernel的处理流程二

 

 

 

索引的格式一

 

       Tis文件:

       <TermCnt,TermInfos>

       TermInfos-><termInfo>……

       termInfo-><Term,DocFreq,.frq文件偏移,.prx文件偏移>

       Term-><PrefixLen,Suffrix,FieldNum>

       PrefixLen->前缀的长度,例如:china,chinese,Prefix为”chin”,PrefixLen=4,suffix=“ese”

  PS:Term表示一个短语(索引分词的最小粒度)

       Freq文件:

表示一个Term在文档中出现的次数

<TermFreqs>TermCount

TermFreqs-><TermFreq>

TermFreq->DocID,Freq?

DocID/2表示文档编号的偏移(相对于前一个文档),如果DocID为奇数,表示Term在文档只出现过一次,为偶数是,Freq表示了出现多少次。

例如:一个词在文档3中出现1次,在文档9中出现了8次,则TermFreqs中出现如下序列:

TermFreqs=<7,18,8>

 

索引的格式二

       prx文件:

       表示一个Term在文档中出现的位置,和frq文件配合使用

        <TermPositions>

         TermPositions-><Postions>

         Positions-><pos>

         Posà位置序列,从小到大排序

       例如:某个term在文档1的位置3,5出现,在文档2的位置4,9出现,Positions的序列如下:

       <3,2,4,5>

       tii文件:

Tis文件的索引信息,方便快速查找tis文件中某个域信息

       Fdx文件:

Fdt文件的索引

<fieldpostions>

Feildpostionsà某个文档在fdt中的位置信息,定长,可以随机访问

       Fdt文件:

       存储具体的域信息

       <fieldcount,<fieldnum,Bits,Value>>

 

索引的存储方法

       差分存储

       {1,4,7,9}存储为{1,3,3,2}

 

       VInt压缩

       每字节的高位表示是否还有剩余字节

       低七位表示数值

0~127使用一个字节表示

128:00000001 10000000

 

分布式索引

       为什么需要分布式

       减低数据压力,便于并行处理

       如何分布

数据切分方式

       如何扩容

针对部分节点扩容,不需要每次都用翻倍的方式扩容

 

 

增量索引

       数据量不断增大,索引文件变大

 

       增量切换的时间增长,切换的风险增加

 

       增量索引和全量索引的合并

 

       实时搜索引擎

搜索的准确性

       案例一

       商品A:上海鲜花速递

       商品B:青岛海鲜特价供应

用户输入“海鲜”,商品A,B同时命中如何解决排序问题?

 

       案例二

       用户搜索“诺基亚”出现很多“诺基亚”的耳机

       用户搜索“N72”,会出现很多赠送“N72耳机“的商品

关键词类目优先

       针对主产品和附属产品设置不同的权重

       Nokia手机的权重大于Nokia耳机的权重

 

       对于一些无法区分主产品和附属产品的,通过配置来解决

       如何做到自动化,不需要人工配置?

       从用户的搜索日志统计,自动更新

关键词直达

       对于一些含义明确的关键词,不需要再进行全文检索

       搜索“N72”,直接到N72的类目

       缺点是什么?

       我们强制修改了用户的搜索条件,增加了类目过滤

       搜索的结果数变少

       类目优先可以解决上面的问题,但是增加了后台的复杂度,更新也相对比较困难。直达可以直接在前台处理。

模糊匹配

       用户输入长关键词时,容易出现搜索不到

       例如:”新款波司登羽绒服”,”诺基亚N72手机“

       问题根源:词位置信息的约束

       如果去掉词位置信息判断是否就可以解决这类问题?

       用户搜索“手机充电器”

       商品A包含”买诺基亚N72手机送充电器“

       比较完善的解决方案:设置权重多重排序

同音词、同义词

       同义词,主要用户扩大搜索结果范围

       搜索“婴儿“,标题中含有“宝宝”的也可以出来

       搜索“一”,标题中含有“1”的也可以出来

       同音词,主要用于纠错

       搜索“诺积压“,提示用户是否需要搜索”诺基亚“

       同音判断

       搜索”Marcbook”,提示用户是否需要搜索“MacBook”

       步长判断

Smartbox

 

       按照词被搜索频率的排序

       数据每天增量更新

       支持分词

       吞吐>1000个/秒

       拼音到汉字的映射(开发中)

       拼音缩写到汉字的映射(开发中)

未来的挑战

 

       准实时

       预排序

       程序级Cache

       聚类

       并行计算

       负载均衡

       丰富索引格式


自己开发网站全文检索系统

注: - 原文: 自己开发网站全文检索系统(Nob) - 本文永久更新链接,markdown格式源码 Github: Aidan Dai 概述 1 问题提出 2 解决的办法 全文检索系统设计...
  • AidanDai
  • AidanDai
  • 2016年01月11日 20:43
  • 1148

全文检索与全文检索系统

      全文检索:计算机索引程序扫描文章中的每一个词,对每一个词建立索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序根据实现建立的索引进行查找,并将查找的结果返回给用户的检索方式。 ...
  • itzsl
  • itzsl
  • 2008年05月19日 15:59
  • 242

TextSearcher(全文检索系统)

  类型:应用扩展 功能:检索      ...
  • www_extract_com_cn
  • www_extract_com_cn
  • 2006年12月25日 15:56
  • 365

基于Python检索系统(1)总体介绍

为了实现将上海理工大学的新闻可以进行关键词、关键字的检索,设计了基于Python的检索系统。 系统主要分为四部分,爬虫、中文分词、建立倒排索引、检索接口。 1、爬虫 将上海理工大学的新闻中心(h...
  • u013270326
  • u013270326
  • 2017年08月05日 15:11
  • 148

搜索引擎的体系架构

参考文献:http://www.stlchina.org/twiki/bin/view.pl/Main/SEStructSys搜索引擎的实现原理,可以看作四步:从互联网上抓取网页→建立索引数据库→在索...
  • wqf363
  • wqf363
  • 2006年12月19日 12:20
  • 2346

Sphinx 全文检索系统

http://www.sphinxsearch.org/archives/80
  • dpf3977013
  • dpf3977013
  • 2013年09月10日 17:43
  • 391

简单的电子商务网站设计方案和功能介绍

简单的电子商务网站设计方案和功能介绍这份电子商务方案书非常简单,适用在要求简单的小型企业电子商务网站建设.站点功能和需求分析 网站设计成含数据库功能的ASP动态网页。主要包含以下功能: FLASH动画...
  • mjh11310
  • mjh11310
  • 2007年06月14日 14:39
  • 8361

分布式全文检索系统SolrCloud

前言 本文简单描述SolrCloud的特性,基本结构和入门,基于Solr4.5版本。 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库。Solr是以Lucene为基础实现...
  • hu948162999
  • hu948162999
  • 2015年06月19日 16:02
  • 845

一个电子商务网站的设计及开发环境配置文档

开发环境配置文档1.涉及的技术,工具 : + ANT1.6.2 ( 项目管理 ) + Eclipse2.1.2 ( 开发代码工具 ) + Junit2.1.1 ( 代码测试工具 ) + JDK1.4....
  • ezerg
  • ezerg
  • 2004年11月01日 17:28
  • 4132

从零开始实现一个电子商务网站----整理需求(三)

如何整理需求
  • ghostbear
  • ghostbear
  • 2010年07月24日 23:45
  • 3703
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:电子商务网站-全文检索系统总体介绍
举报原因:
原因补充:

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