我想知道全文搜索(在文件中搜索数据)和标准数据库搜索(LIKE、IN 等)有什么区别。
我在这里注意到的是,在文件中您没有数据类型,但在数据库中您可以为特定数据定义数据类型。
我对哪种搜索更快以及两者的优缺点很感兴趣。
谢谢。
我想知道全文搜索(在文件中搜索数据)和标准数据库搜索(LIKE、IN 等)有什么区别。
我在这里注意到的是,在文件中您没有数据类型,但在数据库中您可以为特定数据定义数据类型。
我对哪种搜索更快以及两者的优缺点很感兴趣。
谢谢。
全文搜索有几个优点。
索引:
就像是:
WHERE Foo LIKE '%Bar';
无法利用索引。它必须查看每一行,看看它是否匹配。但是,全文索引可以。事实上,全文索引可以在匹配单词的顺序、这些单词之间的距离等方面提供更多的灵活性。
词干:
全文搜索可以词干。如果您搜索run,您可以获得“ran”或“running”的结果。大多数全文引擎都有多种语言的词干词典。
加权结果:
全文索引可以包含多个列。例如,您可以搜索“桃派”,索引可以包括标题、关键字和正文。与标题匹配的结果可以被赋予更高的权重,因为更相关,并且可以排序以显示在顶部附近。
缺点:
全文索引可能很大,比标准 B-TREE 索引大很多倍。出于这个原因,许多提供数据库实例的托管提供商禁用此功能,或者至少为此收取额外费用。例如,我上次检查时,Windows Azure 不支持全文查询。
全文索引的更新速度也可能较慢。如果数据变化很大,与标准索引相比,更新索引可能会有一些滞后。