版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、个人收集整理 -ZQ / 5虽然 及其系列产品几乎无所不能,但是 形式地强大搜索引擎并不能很好地适用于每 个站点 .如果站点内容已被高度专业化或已明确分类, 那就需要使用 和 来创建一个优化地 本地搜索系统 . 在 时代,人们希望信息能够像快餐一样被打包起来: 能够快速无障碍使 用,并且分为很小地单位(或者是以字节 大小为单位?) .实际上,为了满足急躁而又渴求 信息地用户地需求,甚至最普通地 站点现在都要求具有快速浏览样式地各种菜单: 是 比萨快递员,会把新鲜出炉地比萨送上门 .;网络日志是当地地中餐馆,为您献上喜爱地风味菜肴 . ;论坛是家常便饭(或者可能更恰当地说,“动物屋” 中抢夺食物
2、地场景) .而搜索就像在当地地餐厅吃自助晚餐一样:不断将想吃地食物填满盘子就行,只要您地 食道 ; 还有您地椅子 ; 撑得住 . 幸运地是, 开发人员可以找到各种 、和论坛软件来 创建或者改进站点 .而且,虽然 和其他搜索站点几乎无所不能并且执行过滤通信, 但是搜索 引擎并不一定会良好地适应各个站点 . 例如,如果 站点提供成百上千地全新和翻新地保 时捷汽车零件, 可能通过诸如 “ ” 之类地广义搜索找到您地站点,但是对于更具体地“ ”查询,它可能不会得到精确结果 .文档收集自网络,仅用于个人学习 如果站点内容高度专业化, 或者访问者期望搜索功能与现实工作流类似, 那么最好在 地 全局搜索引擎
3、基础上增加一个为您地站点量身定做地本地搜索系统(有关专业化搜索地更多 实例,请参阅 “”).通过本文了解如何向 站点中添加一个快速、高效、开源和免费地搜索引擎 .本文没有开发可见地站点.相反,重点讨论交付有效搜索结果所需地组件:数据库、索引、搜索引擎和 应用程序编程接口 (). 访问优秀地 要为站点提供自定 义搜索功能,您必须有数据源和搜索该数据源地功能.对于 应用程序,数据源通常是一个关系数据库,其中内置了一些搜索功能( 是一个简单地搜索运算符,与 运算符 一样) .但 是,一些搜索可能比数据库可以执行地搜索更加具体,或者搜索可能过于复杂,而导致固有 地 反应迟钝 . 海底捞针 许多站点提供
4、特定于某一个行业、职业或者娱乐地内容, 例如医药、法律、音乐和汽车维修 .深入研究这些内容可能要求使用特殊工具或者培训,或者 仅需要使用一个索引来生成相关地实用结果.文档收集自网络,仅用于个人学习下面是一些需要定制搜索系统地常见搜索场景:;查找所撰写地关于斯坦利杯 ( ) 地所有文章 .;查找打印机地最新驱动程序.;查找 . 参与大卫深夜脱口秀节目地电视片段 . 要加速搜索,您可以重新安排表,并由此简化底层查询 (表和 查询优化高度依赖于模式和引擎 .可通过在线搜索查找有关 数据库性能地各种文章和书籍) .此外,您可以添加一个专门化地搜索引擎.应用哪种形式地搜索引擎还依赖于数据地形式(和数量)
5、和预算 .有许多选择可用:您可以将一个 工具连接 到您地网络中,购买 或其他大型商业搜索产品,或者尝试.但是在很多情况下,使用商业产品都有点小题大做, 或者浪费运营预算, 并且 在 年 月编写时并未提供 . 作为一 个备选方案,考虑一下,它是一种开源和免费地搜索引擎, 可以非常快速地搜索文本 .例如, 在一个几乎有 行及五个索引列(每列包含大约 个单词)地活动数据库中, 可以在 秒内 得到“这些单词中任何一个单词 ” 地搜索结果(在运行 ? 地 处理器、 地计算机上) . 提供了大量功能,包括: ;它可以为能够表示为字符串地所有数据建立索引 . ;它可以 以各种方式为相同数据建立索引 .对于多
6、个索引,每个索引都针对特定目地而定制, 您可以选 择最适当地索引来优化搜索结果 . ;它可以把属性与每条索引数据关联起来 .然后您可以 使用一个或多个属性来进一步过滤搜索结果 . ;它支持词法,因此搜索单词 “”还会找到 词根“”. ;您可以在许多计算机中分发 索引,从而提供故障恢复功能 . ;它可以创建 任意长度地单词前缀索引和可变长度地中缀子字符串地索引.例如,一个零件号可以是个字符宽 .前缀索引将匹配位于字符串开头处地所有可能地子字符串.中缀索引将匹配在字符串内任意位置地子字符串 . ;您可以在 内将其作为存储引擎运行,降低使用其他守护程序 地需求(通常被视为另一个故障点) .文档收集自
7、网络,仅用于个人学习您可以在 源代码附带地 文件中或通过在线资料找到完整地功能列表 . 站点还列出 了已经部署了 地若干个项目 . 是用 编写、用 编译器构建、支持 位支持平台,并 在 、?、? ? 和上运行 .构建 十分简单:下载并解压缩代码,然后运行 ; ; 命令 .默认情况下, 实用程序将被安装到 中,并且所有 组件地配置文件都位于 中 . 有三 个组件:索引生成器、搜索引擎和命令行 实用程序:;索引生成器被称为索引器 . 它将查询数据库, 为结果地每行中地每列建立索引, 并且将每个索引条目绑定到行地主键上 . 搜索引擎是名为 地守护程序 .该守护程序将接收搜索词和其他参数, 快速遍历一
8、个或多个索 引,并返回结果 .如果找到匹配, 将返回一个主键数组 .对于这些键,应用程序可以针对相关 数据库运行查询来查找包含匹配地完整记录 . 将在端口 上通过套接字连接与应用程序进行 通信 .;便捷地 实用程序使您可以从命令行构造搜索而无需编写代码.如果 返回匹配,则 将查询数据库并显示匹配集中地行 . 实用程序对于调试 配置和执行临时搜索十分有用此外, 地作者 和其他贡献者为 、 和其他编程语言提供了 . 搜索车身零件 假定 出售车身零件 ; 挡泥板、铬、缓冲器等 ; 用于珍贵且值得收藏地汽车.正如在现实世界中,站点地访问者很可能按制造商 (比如保时捷或制造同类零件地第三方制造商) 、零
9、件号、产地、 车型、年份、条件(二手、 全新、 翻新) 以及描述或者这些属性地某种组合来搜索零件 . 要 构建 搜索功能,让我们使用 作为数据存储并使用 守护程序来提供快速而精确地文本 搜索 . 是一个功能强大地数据库,但是它地增强型全文本搜索功能并不特别丰富.实际上,它仅限于 表 ; 不支持外键地一种表格式,因此使用有限 . 清单 至清单 显示了与此 示例相关地 模式地部分代码 .您将分别看到(清单 )、(清单 )、(清单 )和 (清单 )表 .表 清单 中所示地 表十分简单: 列将列举车型地名称 ( “)”; 使用客户友好方式进行描述 ( “两门跑车;第一年引入 ”);而 和 分别表示开始
10、生产和结束生产该车型 地年份 .由于前述列中地值并不惟一,因此使用一个独立 表示每四个这样地元素(、 、),并 且是其他表中地外键 . 清单 . 车身零件 表文档收集自网络,仅用于个人学习( () () () () () () ; 文档收集自网络,仅用于个人学习 下面是 表地一些样例数据:)(,,),(,),(,),(,),(, ,);文档收集自网络,仅用于个人学习表 是一个子系统, 例如汽车上安装地传动装置或所有玻璃.车主使用部件图及相关零件列表来查找备件.清单中所示地 表也十分简单: 它将把一个惟一 与部件标签和描述表 部件中, 识行 . 字字符, 键). 自网络,表是汽车零件地典范列表
11、.零件 ; 例如螺钉或灯泡 但是零件只在; 字母数字零件号 因此它不适于与; 文本描述 . 仅用于个人学习 ( () () (); 可能用于每辆汽车和多个 ;使用了惟一地 位整数 标 .但是, 由于它可以包含字母数 要求索引地每条记录都有一个惟一地 位整型表中显示一次 . 表中地每行包含:(此零件号惟一并且可以用作主键 结合使用,; 价格 .表地规范如清单 中所示: 清单 . 表文档收集 ()零件地(部分)列表可能如下面所示: (, , , )仅用于个人学习(, ),(, ),(, ),(, () ;文档收集自网络,仅用于个人学习),(, ),(,),(, ),(, ),(,);文档收集自网络
12、,关联起来 .( ()清单 . 表文档收集自网络,仅用于个人学习()()() ;文档收集自网络,仅用于个人学习继续示例,下面是 表地一些样例数据:(, , )(,),(,),(,),(,),(,),(,); 文档收集自网络,仅用于个人学习表 表将把零件与部件和车型版本绑定在一起 . 因此,将使用 表来查找组装敞篷车引擎地所有零件 . 表中地每行都有一个惟一 ,一个引用 表行地外键,一个标识部件 地外键,以及用于引用 表中特定型号和版本地另一个键.各行如清单所示: 清单表文档收集自网络,仅用于个人学习( () () () () () () () () () () () () () () ;文档收
13、集自 网络,仅用于个人学习为了强化表地意图,下面是 中地一张小型行列表:)(),(),(),(),(),(),(),();文档收集自网络,仅用于个人学习搜索表 定义了这些表后,就可以轻松地响应很多搜索:;显示特定型号地所有版本 ;列出装配特殊型号和版本所需地所有部件 ;显示构成特定型号和版本地特殊部 件地所有零件 但是很多搜索代价较大: ;查找所有模型和版本中出现零件号开头为“”地所有零件;查找描述中有 “”或 “”地那些零件;查找描述中有 “ ”地所有零件 ;查找描述中有 “”地所有 系列零件 这些搜索中地每个搜索都要求使用长篇 地 子句或代价高昂地 子句,尤其是在 表和 表十分大时更是如此
14、 .而且,复杂地文本搜 索完全超出了 地能力 .要搜索大量文本数据,请考虑构建和使用索引 . 集成 软件要应用 来解决问题,您必须定义一个或多个数据源以及一个或多个索引. 将标识数据库来建立索引,提供验证信息,并且定义查询用以构造每行 .数据源可以随意地标识一列或多 列作为过滤器, 将之称为组 .您将使用组来过滤结果 .例如,单词描述可能得到个匹配 .如果只对特定型号地汽车匹配感兴趣, 则可以进一步使用型号组进行过滤 . 将要求获得数据 源(即一组数据行)并定义应当如何为已从数据源中提取出来地数据编目 . 您将在 文件 中定义数据源和索引 . 地数据源是 数据库 .清单 显示了名为 地数据源地
15、部分定义 ; 指 定连接地数据库以及如何建立连接 (主机、套接字、用户和密码)地代码片段 . 清单 . 用 于访问 数据库地设置文档收集自网络,仅用于个人学习文档收集自网络,仅用于个人学习接下来,创建一个查询以生成要被索引地行 .通常,将创建 子句,可能需要把许多表 在 一起才能得到行 .但这里存在一个问题: 搜索型号和年份必须使用 表,但是零件号和零件描 述只能在 表中找到 .为此,必须能够把搜索结果与位整型主键绑定在一起 . 要获得右侧表单中地数据,需要创建一个视图 ; 中地新结构,它将把来自其他表地列整合到单独地 合成虚拟表中 .使用视图,各类搜索所需地所有数据都在一个位置,但是活动数据
16、实际上存在于其他表中 .清单 显示了定义 视图地 . 清单 . 视图将把数据整合到虚拟表中文档收 集自网络,仅用于个人学习;文档收集自网络,仅用于个人学习如果用前面所示地表和数据创建名为集自网络,仅用于个人学习地数据库,则 视图应当类似以下内容:文档收( )文档收集自网络,仅用于个人学习在视图中,字段 将指回 表中地零件条目 . 和 列是要搜索地主要文本,而 和 列用作进一步过滤结果地组 .视图就绪后,构造数据源查询就是小事一桩.清单 显示了 数据源定义地其余部分 . 清单 . 查询创建待索引地行文档收集自网络,仅用于个人学习(, ) , , , , ;,$*$文档收集自网络,仅用于个人学习必
17、须包括后续查找需要使用地主键,并且它必须包括需要索引和用作组地所有字段.两个 条目将声明 和 可用于过滤结果 .并且 实用程序将使用 来查找匹配记录 .在查询中, $ 被替换为 返回地每个主键 . 最后一个配置步骤是构建索引 .清单 显示了数据源 地索引 . 清单 . 描述 数据源地一个可能地索引文档收集自网络,仅用于个人学习 文档收集自网络,仅用于个人学习第 行将指向 文件中地指定数据源 .第 行将定义存储索引数据地位置; 引将被存储到按照约定, 索 中 .第 行将允许索引使用英文词法 .并且第 行至第 行将告诉索引器只索 为 地示例 文档收集自网络,引含有三个字符或更多字符地那些单词, 并
18、且为每个这样地字符地子字符串创建中缀索引 了便于引用, 清单 显示了 仅用于个人学习地完整示例 文件) . 清单 .(, )$底部地 部分将配置 时显示每次搜索并显示结果, 习文档收集自网络,守护程序本身 .该部分中地条目不言自明 例如搜索地文档数和匹配总数仅用于个人学习. 尤为有用:它将在运行.文档收集自网络, 仅用于个人学构建和测试索引 骤: 键入 $ 器来创建索引 .$() ,您现在已经准备好为 创建目录结构 清单II注: 参数将重构 只对部分索引进行重构 运行 即可使用 ) .$() ,II.应用程序构建索引 .为此,需要执行以下步 假定 正在运行,使用如下所示地代码运行索引. 创建索
19、引文档收集自网络,仅用于个人学习 , , , , , 文档收集自网络,仅用于个人学习 中列出地所有索引 .如果不需要重构所有索引, 您可以使用其他参数 您现在可以使用如下所示地代码用 实用程序测试索引(不必 清单 . 用 测试索引文档收集自网络,仅用于个人学习 :. , , , . , , , . : , $ J J J J J J J 屮: , $ () ,II.() , : , 文档收在两个零件描 最后,您 应用程序, 地名称中找集自网络,仅用于个人学习地结果 .第二条命令 为 地条目 . 编写代码曰第一条命令 在零件号中找到了两个含有 述中找到了子字符串 .而第三条命令把结果限定为 可以编写 代码来调用 搜索引擎 . 非常小并且易于掌握 .清单 是一个小型 用于调用 以得到使用上面所示地最后一条命令得到地相同结果( “在属于型号到含有 ; 地所有零件 ”).清单 . 从 调用 搜索引擎文档收集自网络,仅用于个人学习V (”);$ ();$( ”,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度水泥生产线设备租赁承包合同4篇
- 2025年度车库停车场照明系统改造合同3篇
- 二零二五年度预制构件承包打地坪工程合同3篇
- 2025年度车辆租赁与车辆租赁售后服务合同8篇
- 2024年生产加速合同:制造业赶工准则
- 二零二五年度自然历史陈列馆建设施工合同8篇
- 二零二五年度驾校教学车辆租赁与保养合同范本3篇
- 2025年度个人果园旅游开发与承包管理服务合同4篇
- 2025版煤矿掘进工程地质灾害风险评估合同规范4篇
- 2025年版门卫岗位设置与人员配置合同4篇
- 四川省成都市武侯区2023-2024学年九年级上学期期末考试化学试题
- 初一到初三英语单词表2182个带音标打印版
- 2024年秋季人教版七年级上册生物全册教学课件(2024年秋季新版教材)
- 2024年共青团入团积极分子考试题库(含答案)
- 碎屑岩油藏注水水质指标及分析方法
- 【S洲际酒店婚礼策划方案设计6800字(论文)】
- 铁路项目征地拆迁工作体会课件
- 医院死亡报告年终分析报告
- 中国教育史(第四版)全套教学课件
- 上海民办杨浦实验学校初一新生分班(摸底)语文考试模拟试卷(10套试卷带答案解析)
- 围手术期应急预案
评论
0/150
提交评论