Sql server 如何实现企业搜索
我们正在公司中搜索不同的数据源。我们有多个数据库中的信息,需要从我们的内部网进行搜索。最初的全文搜索(FTS)实验结果令人失望。我们已经实现了一个定制的搜索引擎,它可以很好地满足我们的需求。然而,我们希望确保我们做的是“正确的事情”,并且不会错过任何可以让我们的工作更轻松的好工具 我们需要:Sql server 如何实现企业搜索,sql-server,oracle,search,full-text-search,search-engine,Sql Server,Oracle,Search,Full Text Search,Search Engine,我们正在公司中搜索不同的数据源。我们有多个数据库中的信息,需要从我们的内部网进行搜索。最初的全文搜索(FTS)实验结果令人失望。我们已经实现了一个定制的搜索引擎,它可以很好地满足我们的需求。然而,我们希望确保我们做的是“正确的事情”,并且不会错过任何可以让我们的工作更轻松的好工具 我们需要: 列搜索 按列搜索的能力 我们标记表中哪些列是可搜索的 在db列和数据之间保持一定的关系 我们对结果提供高级过滤 促进(亚马逊风格)过滤 通过对结果进行分组并允许用户通过复选框进行筛选来提供筛选 这是一
- 按列搜索的能力
- 我们标记表中哪些列是可搜索的
- 我们对结果提供高级过滤
- 促进(亚马逊风格)过滤
- 通过对结果进行分组并允许用户通过复选框进行筛选来提供筛选
- 这是一个很棒的特性,用户非常喜欢它
- 我们有很多独特的标识符(产品id等)李>
- 唯一id可以包含具有含义(位置等)的子部分
- 或者只有一部分可用(当用户搜索时)
- 或者(由于设计决策非常糟糕),id中可能有空白
- 这是我们现在通过CHARINDEX(MSSQL)和INSTR(ORACLE)实现的一个主要功能
- 与全文相比,在MSSQL上使用char索引函数的性能相当(+/-)
- 没有在Oracle上进行测试
- 然而,针对这两种类型的数据库的搜索速度非常快
- 我们利用索引(MSSQL)和物化(Oracle)视图来提高速度
- 这是一个巨大的胜利,Oracle物化视图优于MSSQL索引视图
- 两者都在只读加入情况下提供加速功能(如搜索合并公司和产品)
- 符合用户对范例CTRL-f->enter text->find matches期望的搜索
- 全文搜索在这方面不是最好的(匹配速度慢且不一致)
- 部分匹配(参见“部分单词匹配”)
- 跳过索引跳过,这不是一个硬性要求
- Xapian有这个
- 类似于谷歌的“你的意思是:
- 在这一点上,搜索我们的数据源是最重要的事情
- 即使在搜索文档时,我们也会寻找部分单词匹配,等等
- 事实证明,我们自己的简单排名算法比FTS的同类算法要好得多
- 用户理解它,我们理解它,它几乎总是相关的
- 只是不需要[跑|跑|跑]
- 短语匹配,或/和等
- 根据雅各布·尼尔森的说法
- 大多数用户都使用简单的搜索短语
- 很少有人使用高级搜索(如果可用)
- 信息架构第3版第185页
- “很少有用户利用它们[高级搜索功能]”
- 我们的类似亚马逊的过滤允许更好的过滤(通过用户测试)
- 我们发现结果对用户来说并不总是“有意义”
- 使用FTS进行搜索很难调整(哪一组运营商符合用户的期望)
- 高级搜索操作员是不可能的
- 我们不需要它们,因为
- 用户不理解它们
- 性能与char索引函数非常接近(+/1)
- 但结果有时只是“奇怪”
你也可以提出你的FTS观点。在您说“只使用全文搜索,因为这是我们唯一的工具”之前,请确保它满足上述要求。我建议您研究Solr,我相信它将满足您的需求:
对于现成的解决方案:您是否查看了 Google Mini/GSA网站的报价: 。。。如果直接数据库索引是对您的要求,我们鼓励您考虑具有直接数据库连接的谷歌搜索设备。
当然,它会以你所期望的那种愚蠢的方式索引所有其他内容。我最终编写了自己的代码 结果非常好。用户喜欢它,它与我们现有的技术配合得很好 其实没那么难。只是花了点时间 特点:
- 分面搜索(亚马逊、沃尔玛等)
- 部分单词搜索(真正的内容不是全文)
- 搜索数据库(oracle、sql server等)和非数据库源
- 与现有环境很好地集成
- 维护关系,以便进行n对n搜索和显示
- -->这意味着我可以在搜索结果中显示主记录的子记录
- -->我还可以搜索任何子字段并返回主记录
使用字典和大量内存可以做的事情真是太棒了。ApacheSolr是一种很好的项目启动方式,而且它是开源的。你也可以