我想知道SQL Server是否实际上在可以位于文本中间的搜索中使用其全文索引(例如LIKE%searchKeyword%)?
我忘了我在哪里阅读它,但我确实读过某个地方只有在以“StartsWith”方式(searchKeyword%)使用全文索引时才会使用它,在那里搜索具有固定开头和变量的LIKE结束。
如果这是真的,请告诉我?
答案 0 :(得分:1)
使用 CONTAINS()和 FREETEXT()等功能访问全文索引(如果有的话,默认情况下不启用) LIKE 运营商。
正常索引(例如,“CREATE INDEX ix_tbl_fld ON mytable(textfield)”)可由 LIKE 运算符使用,但在模式以%通配符开头时则不能...这些搜索需要扫描表格中的所有值。
如果您有大量重复相同值的行,则使用SQL Server 2008 下的表压缩可以提高 LIKE'%keyword%'搜索的效果,甚至没有索引(我没有它,所以我无法测试这个理论......)。
答案 1 :(得分:0)
是的,它也适用于文本中间的关键字。例如,下面的链接使用全文搜索..
并且在他们的内容中找到了men这个词。希望它有所帮助。
答案 2 :(得分:0)
如果你仔细阅读MSDN文档,你会发现你只能搜索像“曲棍球”这样的固定表达式,或者像“曲棍球*”那样搜索基于前缀的表达式 - 但遗憾的是,不能搜索任何其他内容。
请参阅:
Supported Forms of Query Terms
不幸的是,这几乎就是全部。你不能搜索“曲棍球”: - (
马克
答案 3 :(得分:0)
在SQL Server中进行自由文本搜索的最佳方法是使用FreeTextTable,这不仅可以为您提供强大的搜索*,还可以返回排名的结果。
例如:
SELECT *
FROM FreeTextTable(YourTableName,(Column1,Column2), 'search term')
INNER JOIN YourTableName as T ON T.ID = [Key] ORDER BY RANK DESC
这将按照匹配程度(通过RANK列)的顺序为您提供排名结果。