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