什么是全文索引,何时应该使用它?

时间:2010-09-05 10:30:25

标签: mysql

正如标题所述,什么是全文索引以及何时应该使用它?

2 个答案:

答案 0 :(得分:22)

在数据库中,索引通常用于在查找where子句中定义的内容时增强性能。但是,当涉及过滤某些文本时,例如使用WHERE TextColumn LIKE '%searchstring%'之类的东西然后搜索很慢,因为常规数据库索引的工作方式针对列的“整个内容”的匹配进行了优化,而不仅仅是其中的一部分。具体而言,包含通配符的LIKE搜索不能使用任何类型的索引。

如下面的评论所述,MySQL需要MATCH () ... AGAINST语法才能在全文索引中进行搜索; BTW根据数据库供应商的不同而不同。在MS SQL中,您可以使用CONTAINS,因此在计划支持其他数据库时请记住这一点。

全文索引更适用于常规文本,因为它们针对这些类型的列进行了优化。非常简化:他们将文本分成单词并对单词而不是整个文本进行索引。在查找特定单词时,文本搜索的速度要快得多。

答案 1 :(得分:13)

全文索引是您在MySQL数据库中应用于计划运行全文搜索的文本字段的索引。全文搜索使用match(field) against('text')语法。如果要运行全文搜索,则必须在要运行它的列上具有全文索引。

全文搜索有三种类型。我会引用手册,因为我觉得它说得最好:

  
      
  • 布尔搜索使用a的规则解释搜索字符串   特殊查询语言。字符串   包含要搜索的单词。它   也可以包含运算符   指定一个单词的要求   匹配时必须存在或不存在   行,或它应该加权   高于或低于平常。共同   诸如“some”或“then”之类的词是   停用词,如果存在则不匹配   在搜索字符串中。 IN BOOLEAN   MODE修饰符指定一个布尔值   搜索。有关更多信息,请参阅   第11.9.2节,“布尔全文   搜索”。

  •   
  • 自然语言搜索将搜索字符串解释为   自然人类语言中的短语(a   自由文本中的短语)。没有   特种经营者。禁用词列表   适用。另外,这些话   存在于50%或更多行中   被认为是常见且不匹配。   全文搜索很自然   语言搜索,如果没有修饰符   给出。

  •   
  • 查询扩展搜索是对自然语言的修改   搜索。搜索字符串用于   执行自然语言搜索。   然后来自最相关行的单词   搜索返回的内容被添加到   搜索字符串和搜索是   再做一次。查询返回行   从第二次搜索。 WITH QUERY   EXPANSION修饰符指定查询   扩展搜索。更多   信息,请参阅第11.9.3节,   “查询全文搜索   扩张”。

  •   

有关更多信息,请参阅Full Text Search Reference Page