首先,我使用的是模型。文本字段,但它不支持索引。切换到模型。CharField 没有帮助,因为某些行中的文本大小大于 50000 个字符。MySQL 中最多允许索引 3072 字节的数据。我应该切换到另一个RDBMS还是使用像MongoDB这样的NoSQL?我还尝试使用带有 whoosh 的 haystack 进行索引和搜索,但搜索非常慢。
您应该添加一个全文索引,并使用 MySQLMATCH ... 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"的所有内容。
全文搜索有局限性和奇怪之处,但如果您不想切换数据库引擎,这是一个很好的起点。
您可以在此处找到有关 MySQL 数据库引擎全文搜索的更多信息