当前位置: 首页>后端>正文

django 搜索引擎自动补全 django实现搜索功能

在用Django搭建网站的时候,要实现一个搜索功能,实现对数据库的检索功能,这里用到了网上的几个标准库: django-haystack, whoosh, jieba。

其中这里有详细的haystack中文教程 1 首先是在相应的环境中安装,pip install 上面这三个。这个是默认安装anaconda的环境里,当然你也可以安装到自己的虚拟环境中。

django 搜索引擎自动补全 django实现搜索功能,django 搜索引擎自动补全 django实现搜索功能_django 搜索引擎自动补全,第1张

2 进行配置,首先是在Django的settings 里进行配置。

在APPS 里,写在默认的之后,自定义的app 之前

django 搜索引擎自动补全 django实现搜索功能,django 搜索引擎自动补全 django实现搜索功能_haystack_02,第2张

在settings.py 文件的末尾加入如下代码:

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.whoos_backend.WhooshEngine',
        'PATH': os.path.join(BASE_DIR, 'whoosh_index')
    }
}

HAYSTACK_SEARCH_RESULT_PER_PAGE = 3

其中引擎来自我们导入的模块中的类

django 搜索引擎自动补全 django实现搜索功能,django 搜索引擎自动补全 django实现搜索功能_haystack_03,第3张

3,SearchIndexes对象是Haystack决定那些数据应该放入索引和处理流数据的方式,就是在你要用到搜索功能的那个app里,创建search_indexes.py文件,而且尽量不要改文件文件,方便它自己查找这个文件。
这里我要查的是goods, 所以直接放到goods 这个APP 里,并且在里面写入如下代码:

from haystack import indexes
from goods.models import GoodsModel

class GoodsModelIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)

    def get_model(self):
        return GoodsModel

    def index_queryset(self, using=None):
        return self.get_model().objects.all()

然后在templates文件夹下新建一个文件夹search, 再在里面新建文件夹indexes,再在里面新建文件夹goods,在goods 文件夹里新建文件goodsmodel_text.txt,

这里需要注意,层级关系不能乱,如下图

django 搜索引擎自动补全 django实现搜索功能,django 搜索引擎自动补全 django实现搜索功能_ 搜索_04,第4张

object表示从数据库获取到的数据,点后面跟的是数据的属性

下来,在主文件的urls中,加入search的路由

django 搜索引擎自动补全 django实现搜索功能,django 搜索引擎自动补全 django实现搜索功能_haystack_05,第5张

最后,

所有配置完成,把数据库中的数据放入索引,在你相应的文件目录中输入 manage.py rebuild_index

django 搜索引擎自动补全 django实现搜索功能,django 搜索引擎自动补全 django实现搜索功能_django 搜索引擎自动补全_06,第6张

输入y 表示确认,可以看到你的数据库里的商品个数

django 搜索引擎自动补全 django实现搜索功能,django 搜索引擎自动补全 django实现搜索功能_数据库_07,第7张

(如果你只是低流量或者你的搜索引擎能处理,加入自动更新索引,在setting.py 文件中加入如下代码)

django 搜索引擎自动补全 django实现搜索功能,django 搜索引擎自动补全 django实现搜索功能_数据库_08,第8张

至此,所以配置已经完成,我们来试一试。

首先,进行前后端的配置,如下图

django 搜索引擎自动补全 django实现搜索功能,django 搜索引擎自动补全 django实现搜索功能_Django_09,第9张

之后是在search.html 里面进行配置

django 搜索引擎自动补全 django实现搜索功能,django 搜索引擎自动补全 django实现搜索功能_数据库_10,第10张

可以看到数据库中有good.pic 这个属性,但是因为没有在goodmodel_text.txt 中写入,即使在前端写入了,
也不会再网页上显示出来。


https://www.xamrdz.com/backend/36g1951401.html

相关文章: