全文索引问题

时间:2011-09-07 15:57:02

标签: mysql full-text-search indexing

我正在尝试在我的数据库上实现全文搜索并遇到一些问题我不知道如何解决..

  1. 首先我在创建全文索引时使用了alter table,当我最终使用它时,我无法在创建索引之前搜索已经存在于表中的记录。问题可能与数字有关吗?他们都被数字和字母混合在一起。

  2. 无论如何,我继续,添加了一些新记录,然后我创建了一些新的索引,这次使用phpMyAdmin。现在我仍然遇到了来自1的第一个记录的问题,但是在新索引工作正常之前添加的新记录。这没有意义(除非不允许数字),任何人都有任何想法吗?

  3. 还在继续,我开始测试更多的索引。这可能有点难以理解,如果你使用phpMyAdmin它会更容易:

    在phpMyAdmin中,如果您同时创建索引,则会对其进行“分组”。当我使用alter table时也会发生这种情况。例如,假设我已将名为name和summary的列编入索引。现在我无法进行搜索 MATCH(name)AGAINST('foobar')但我可以进行搜索 MATCH(名称,摘要)AGAINST('foobar') 。但是如果我再创建一个索引,只使用'name'并保留旧的“索引组”,上面的搜索工作正常。当然,搜索 MATCH(摘要)AGAINST('foobar')是行不通的。那为什么呢?我该如何解决? (除了为我想要做的每一个可能的搜索创建一个新的索引集)

  4. 很想回答这些问题!谢谢

1 个答案:

答案 0 :(得分:0)

对于#1和#2,您应该检查ft_min_word_len的值。默认情况下,根据manual,不会为短于4个字母的单词编制索引。

对于#3,这是MySQL manual中明确记录的限制:

  • MATCH()列列表必须与某些列列表完全匹配 表的FULLTEXT索引定义,除非此MATCH()为IN 布尔模式。布尔模式搜索可以在非索引上完成 列,虽然它们可能很慢。