Ale*_*lex 27
在数据库中,索引通常用于在查找where子句中定义的内容时增强性能.然而,当涉及到过滤某些文本时,例如使用类似的东西,WHERE TextColumn LIKE '%searchstring%'
搜索速度很慢,因为常规数据库索引的工作方式针对列的"整个内容"而不仅仅是其一部分的匹配进行了优化.具体而言,包含通配符的LIKE搜索不能使用任何类型的索引.
正如下面的评论中提到的,MySQL需要MATCH () ... AGAINST
在全文索引中搜索的语法; BTW根据数据库供应商的不同而不同.在MS SQL中,您可以使用,CONTAINS
因此在计划支持其他数据库时请记住这一点.
全文索引更适用于常规文本,因为它们针对这些类型的列进行了优化.非常简化:他们将文本分成单词并对单词而不是整个文本进行索引.在查找特定单词时,文本搜索的速度要快得多.
Dan*_*ham 13
全文索引是您在MySQL数据库中应用于计划运行全文搜索的文本字段的索引.全文搜索使用match(field) against('text')
语法.如果要运行全文搜索,则必须在要运行它的列上具有全文索引.
全文搜索有三种类型.我会引用手册,因为我觉得它最好:
布尔搜索使用特殊查询语言的规则来解释搜索字符串.该字符串包含要搜索的单词.它还可以包含指定要求的运算符,以便在匹配的行中必须存在或不存在单词,或者它应该比通常更高或更低的权重.诸如"some"或"then"之类的常用词是停用词,如果存在于搜索字符串中则不匹配.IN BOOLEAN MODE修饰符指定布尔搜索.有关更多信息,请参见第11.9.2节"布尔全文搜索".
自然语言搜索将搜索字符串解释为自然人类语言(自由文本中的短语)中的短语.没有特殊的运营商.禁用词列表适用.此外,50%或更多行中出现的单词被认为是常见的并且不匹配.如果没有给出修饰符,则全文搜索是自然语言搜索.
查询扩展搜索是自然语言搜索的修改.搜索字符串用于执行自然语言搜索.然后将搜索返回的最相关行中的单词添加到搜索字符串中,然后再次进行搜索.查询返回第二次搜索中的行.WITH QUERY EXPANSION修饰符指定查询扩展搜索.有关更多信息,请参见第11.9.3节"使用查询扩展的全文搜索".
有关更多信息,请参阅全文搜索参考页面.