mysql - 我无法在包含大量文本的 Django 模型字段上使用索引。我正在使用MySQL。我应该怎么办?

标签 mysql django mongodb django-haystack full-text-indexing

首先我使用的是 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/

相关文章:

Python 类覆盖

mongodb - 将文件夹存储在 fs.files 集合中

node.js - 来自输入文件数组的 fluent-ffmpeg

mongodb - GeoNear Mongoose 和 2d 索引

mysql - 从 Mac 连接并获取远程 MySQL 服务器

PHP/MySQL 查询 - 如果当前时间/日期在计划内

python - Django 模型 OneToOneField 无需创建额外的 _id 数据库列

django - 无法在夜间更新 Salesforce 对象

mysql - 如何: Format a MySQL query result with currency signs using PHP

mysql - 在 mysql 中选择长文本列太慢