首先我使用的是 models.TextField,但它不支持索引。切换到 models.CharField 没有帮助,因为某些行中的文本大小大于 50000 个字符。 MySQL 中允许最大 3072 字节的数据建立索引。我应该切换到另一个 RDBMS 还是使用像 MongoDB 这样的 NoSQL?我还尝试使用 haystack 和 whoosh 进行索引和搜索,但搜索速度非常慢。
最佳答案
您应该添加全文索引,并使用 MySQL MATCH ... AGAINST ...
查询
例如:
ALTER TABLE my_table ADD FULLTEXT `myTextColumn` (`myTextColumn`(50000));
SELECT * FROM my_table WHERE MATCH (`myTextColumn`) AGAINST ('tex*' IN BOOLEAN MODE);
它的作用是: 它会在您的列“myTextColumn”上创建全文索引 然后它选择“myTextColumn”包含字符串“tex”的所有内容。
全文搜索有局限性和奇怪之处,但如果您不想切换数据库引擎,这是一个很好的起点。
您可以找到有关全文搜索的更多信息 here用于 MySQL 数据库引擎
关于mysql - 我无法在包含大量文本的 Django 模型字段上使用索引。我正在使用MySQL。我应该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44046134/