database - 全文搜索与标准数据库搜索

标签 database search full-text-search

我想知道全文搜索(搜索文件中的数据)和标准数据库搜索(LIKE、IN 等)之间的区别。

我在这里注意到,在文件中您没有数据类型,但在数据库中您可以为特定数据定义数据类型。

我感兴趣的是哪种搜索速度更快,两者的优缺点是什么。

谢谢。

最佳答案

全文搜索有几个优点。

索引:

类似于:

WHERE Foo LIKE '%Bar';

无法利用索引。它必须查看每一行,看看它是否匹配。但是,全文索引可以。事实上,全文索引可以在匹配词的顺序、这些词之间的距离等方面提供更大的灵 active 。

词干提取:

全文搜索可以词干 词。如果您搜索run,您可以获得“ran”或“running”的结果。大多数全文引擎都有各种语言的词干词典。

加权结果:

全文索引可以包含多个列。例如,您可以搜索“peach pie”,索引可以包括标题、关键字和正文。与标题匹配的结果可以加权更高,因为更相关,并且可以排序显示在顶部附近。

缺点:

全文索引可能巨大,比标准 B-TREE 索引大很多倍。出于这个原因,许多提供数据库实例的托管提供商禁用此功能,或者至少为此收取额外费用。例如,上次我检查时,Windows Azure 不支持全文查询。

全文索引的更新速度也较慢。如果数据变化很大,与标准索引相比,更新索引可能会有一些滞后。

关于database - 全文搜索与标准数据库搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17796717/

相关文章:

asp.net-mvc - Entity Framework /MVC。如何防止在不选择新图像的情况下更新当前记录时删除保存在数据库中的图像 blob

数据库:最佳实践 - 旧数据?

search - 在 Notepad++ 中创建自定义搜索按钮

php - MySQLi 全文搜索多列类别

html - sqlite-fts3 : custom tokenizer?

php - 倒数计时器 PHP 错误

android - 如何在日历 View 中显示数据库中的日期

mysql - 对于一个表中的每组关键字,在第二个表中查找所有匹配的匹配项

java - 统一成本搜索实现

sql - 你如何在 tsql contains 函数中搜索 & (符号)?