Django的全文搜索MySQL的

问题描述:

我在Django默认User模型按如下:Django的全文搜索MySQL的

delimiter $$ 

CREATE TABLE `auth_user` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `username` varchar(30) NOT NULL, 
    `first_name` varchar(30) NOT NULL, 
    `last_name` varchar(30) NOT NULL, 
    `email` varchar(75) NOT NULL, 
    `password` varchar(128) NOT NULL, 
    `is_staff` tinyint(1) NOT NULL, 
    `is_active` tinyint(1) NOT NULL, 
    `is_superuser` tinyint(1) NOT NULL, 
    `last_login` datetime NOT NULL, 
    `date_joined` datetime NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `username` (`username`) 
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=latin1$$ 

我试图alter table 'auth_user' add fulltext(first_name), last_name, email)添加全文搜索,我不断收到错误Error Code: 1214. The used table type doesn't support FULLTEXT indexes。有没有理由不支持全文搜索?我想这可能是因为我扩展了模型并添加了自己的表格?

+0

django文档也建议不要改变模型的表格类型,最有可能出于这个原因。我假设django会选择合适的类型或自己使用一些最佳选择。 – jdi 2012-07-08 04:32:36

+0

https://docs.djangoproject.com/en/dev/faq/models/#how-do-i-add-database-specific-options-to-my-create-table-statements-such-as-specifying- myisam-as-the-table-type – jdi 2012-07-08 04:37:03

全文索引只能在MyISAM表上工作,而你的是InnoDB。 source

+0

因此,我无法进行全文搜索? :( – KVISH 2012-07-08 04:34:16

+0

@kalvish:将你的表类型改为MyISAM? – jdi 2012-07-08 04:35:24

+0

问题是有很多外键约束,这肯定会影响我的应用程序,它会大量使用它。 – KVISH 2012-07-08 04:37:19

您可能想要使用Django-Sphinx进行全文搜索或查看它们的实现。 https://github.com/dcramer/django-sphinx