我能否在不使用全文搜索的情况下获得类似的全文搜索功能?

Jef*_*ddy 4 sql-server full-text-search

通常,我不会在这里发布此类问题,但我似乎找不到任何实际使用过 SQL Server 全文搜索的人,所以我在这里发布。

我正在为涉及搜索项目目录的客户创建解决方案。项目数量目前约为 56k 项目。这个数字在几年内可能达到 200k,所以我将安全地假设最大项目为 500k。

这是我的要求?

搜索需要快速。

需要能够进行关键字搜索,搜索多列(即材料、特征、供应商项目名称、项目名称等...)

一个项目在上述所有 4 列中的值可能为“铝”。一个项目的多个匹配将比仅匹配一列的项目“排名”更高。

Word Inflection:即搜索 PE 应返回 Polyethelene 材料项目,或搜索 RND(行业标准)应返回形状为圆形的项目。

结果将根据匹配项、匹配项数量和其他可能在代码中处理的标准进行加权。

全文搜索似乎可以处理很多此类问题,但我不确定这是正确的方法。我没有任何包含大量文本的单列(如描述字段),据我所知,全文搜索确实是为之而设计的。我考虑过创建一个表,其中包含合并为单个列的所有列数据的串联。我将仅使用此列进行搜索,然后使用返回的索引键加入我的实际 Item 表。

当我开始考虑这些类型的解决方案时,我开始怀疑是否最好不使用全文搜索。

一方面,这似乎有点矫枉过正。但另一方面,它有很多我可以使用的功能(我想到了同义词库)。

那么,我应该继续研究使用 SQL Server 的全文搜索,还是尝试提出我自己的解决方案。

Mar*_*ith 5

本机全文可以处理您提到的所有功能。

它是否会成为您特定域的最佳解决方案是一个艰难的决定。与其尝试手动推出替代方案,不如使用 SQL FTS 进行概念验证,并使用一个或多个开源替代方案重复练习。

Lucene是比较明显的竞争者,并伴随着SO 团队的“堆栈溢出搜索现在少了 81% 的蹩脚”的认可。