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

zaj*_*jke 1 database search full-text-search

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

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

我感兴趣的是什么样的搜索更快,两者的优缺点是什么.

谢谢.

Mik*_*sen 11

全文搜索有一些优点.

索引:

就像是:

WHERE Foo LIKE '%Bar';
Run Code Online (Sandbox Code Playgroud)

无法利用索引.它必须查看每一行,看它是否匹配.但是,全文索引可以.实际上,全文索引可以在匹配单词的顺序,这些单词的接近程度等方面提供更多的灵活性.

词干:

全文搜索可以阻止单词.如果搜索运行,则可以获得"运行"或"运行"的结果.大多数全文引擎都有各种语言的词典.

加权结果:

全文索引可以包含多个列.例如,您可以搜索"桃饼",索引可以包含标题,关键字和正文.与标题匹配的结果可以加权更高,更相关,并且可以排序以显示在顶部附近.

缺点:

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

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