edk*_*rin 20 mysql django full-text-search
我需要为我的Django应用程序实现全文搜索,将MySQL作为后端运行.
假设我的模型如下:
class MyItem(models.Model):
title = models.CharField()
short_description = models.TextField()
description = models.TextField()
Run Code Online (Sandbox Code Playgroud)
我想首先在标题中找到搜索词出现的结果,然后在short_description和结尾的描述字段中得到结果.如果我不必使用额外的模块/应用程序完成此任务,我会更高兴.
Sil*_*ght 24
您可以在django中使用全文搜索
MyItem.objects.filter(title__search="some search text")
Run Code Online (Sandbox Code Playgroud)
有一点是 - 你不能从Django模型定义全文索引,你需要直接在数据库中进行(使用PHPMyAdmin或SQL查询)
有关字段查找,请参阅Django文档 search
在之前收视率最高的答案被弃用。从Django 1.10开始,不再search为MySQL数据库提供字段查找(请参见1.10文档中的搜索部分)。
__搜索查询查找
不建议使用仅支持MySQL且功能极为有限的搜索查询。用自定义查找替换它:
Run Code Online (Sandbox Code Playgroud)from django.db import models class Search(models.Lookup): lookup_name = 'search' def as_mysql(self, compiler, connection): lhs, lhs_params = self.process_lhs(compiler, connection) rhs, rhs_params = self.process_rhs(compiler, connection) params = lhs_params + rhs_params return 'MATCH (%s) AGAINST (%s IN BOOLEAN MODE)' % (lhs, rhs), params models.CharField.register_lookup(Search) models.TextField.register_lookup(Search)
我不知道现在是否有帮助,但我已经为 Django 创建了一个新的 Python 库,它支持MySQL 和 MariaDB 的一列或多列本机全文搜索引擎:
您可以在GitHub 存储库上查看它
还有如何安装、使用它以及如何FULLTEXT INDEX通过 Django 迁移(Django 1.7+)创建内容的描述。
如果您已经配置了索引并SearchManager为您的模型设置了 ,您应该能够运行如下命令:
Mymodel.objects.search('Something')
Mymodel.objects.search('Somet*')
Mymodel.objects.search('+Something -Awesome')
Run Code Online (Sandbox Code Playgroud)
只是想更新这个主题,因为到目前为止我还没有找到可接受的解决方案,它也可能对那里的人有所帮助:)
干杯多米
| 归档时间: |
|
| 查看次数: |
18721 次 |
| 最近记录: |