需求:我们必须开发一个搜索功能,其中用户将输入搜索词到文本框中。这些术语将在表的不同列(标题、描述、注释)中搜索。
举例;
Covid -应该搜索有Covid单词的记录
“7月份的Covid 19”-应该搜索具有“7月份Covid 19”的完全匹配字符串的记录。
Covid或Corona --应该搜索有Covid或word Corona的记录。
科维德和科洛娜-应该搜索有科维德和科洛娜字样的记录。
Corona或Covid和Virus -应该搜索可能有单词Corona但必须有Covid和病毒的记录。
此外,用户可以使这些组合过载。
我们当前的方法:
目前,我们依赖于识别字符串中所有关键字的基本方法,并试图生成相应具有WHERE子句的动态SQL查询。
我们的问题:
我们所采用的方法是非常传统的,而且动态查询的生成以及它的执行都会影响性能。虽然我们经过大量的搜索无法找到任何工作样本,文章,算法,链接,我们相信,应该有更好的方法来实现这一点。因此,寻找这样的指针。
发布于 2020-07-26 08:26:16
如果使用SQLSERVER,在文本中搜索单词或短语的最佳方法是使用全文搜索。
在您更改表的结构之前,先将所有列放在一个列中,然后再实现它。
使用全文搜索,您可以搜索:
单击这里获取许多示例查询。
下面是全文和喜欢搜索之间的区别:
与全文搜索不同,类似Transact-SQL谓词只适用于字符模式。此外,不能使用LIKE谓词查询格式化的二进制数据。此外,针对大量非结构化文本数据的类似查询要比对相同数据的等效全文查询慢得多。针对数百万行文本数据的相似查询可能需要数分钟才能返回;而对相同数据的完整文本查询可能只需几秒钟或更短的时间,这取决于返回的行数。
https://stackoverflow.com/questions/63102453
复制相似问题