我有一个数据库,里面有很多客户。系统的用户希望能够通过姓名等方式查找客户的帐户。
我所做的是创建一个名为 CustomerFullText 的新表,它只有一个 CustomerId 和一个 nvarchar(max) 字段“CustomerFullText”。在“CustomerFullText”中,我将我为客户拥有的所有文本(例如名字、姓氏、地址等)连接在一起,并且我在该字段上有一个全文索引,以便用户只需输入一个搜索框并获得匹配的结果。
我发现这给出了更好的结果,尝试搜索存储在许多不同列中的数据,尽管我想我有兴趣听到这本身是否是一个糟糕的主意。
许多人的名字听起来相同,但拼写不同:Katherine、Catherine 和 Catharine,也许数据库中记录的人是 Katherine,但自称是 Kate。还有,麦当劳对麦克唐纳,丽兹对伊丽莎白,等等。
因此,我正在做的是,在正确存储原始名称的同时,在构建全文之前进行一系列替换。因此,所有的 Katherine 和 Catheine 等在全文字段中都替换为“KATE”。在查询数据库之前,我对搜索参数进行了相同的转换,因此在搜索框中键入“Catherine”的人实际上会针对数据库中的全文索引运行“KATE”查询,这将匹配 Catherine AND Katherine等等。
我的问题是:这是否复制了现有 SQL Server 全文功能的任何部分?我看过了,但我认为这与自定义词干分析器或分词器或类似内容不同。