django使用全局搜索功能的实例详解

  

  

<强> 1第一步:

  

全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理。

  

干草堆:全文检索的框架、支持嗖,solr, Xapian, Elasticsearc四种全文检索引擎

  

呼:纯Python编写的全文搜索引擎对于小型的站点,嗖已经足够使用

  

jieba:一款免费的中文分词包

  

<强> 1)在虚拟环境中依次安装需要的包。

        pip安装django-haystack   pip安装嗖   pip安装jieba      

<强> 2注册应用

        INSTALLED_APPS=(   …   “干草堆”,   )      

<>强创建的模型

        类GoodInfo (models.Model):   消息=models.CharField (max_length=100)   内容=models.TextField ()      def __str__(自我):   返回self.message   之前      

<强> 3在设置中配置搜索引擎

        #全文搜索引擎的配置   HAYSTACK_CONNECTIONS={   “默认”:{   #使用呼引擎   “发动机”:“haystack.backend.whoosh_cn_backend.WhooshEngine”,   #索引文件路径   “路径”:os.path。加入(BASE_DIR whoosh_index),   }   }      #当添加,修改,删除数据时,自动生成索引   HAYSTACK_SIGNAL_PROCESSOR=' haystack.signals.RealtimeSignalProcessor '      之前      

<强> 4在项目的urls . py中添加搜索的配置。

        url (r ^搜索/,包括(haystack.urls)),      

<强> 5在创建的应用目录下创建search_indexes。py编写一下程序

        从干草堆导入索引   从进口GoodInfo得閒      #对指定的某个类的某些数据建立索引   类GoodInfoIndex(索引。SearchIndex indexes.Indexable):   文本索引。CharField(文档=True, use_template=True)      def get_model(自我):   返回GoodInfo      def index_queryset(自我,使用=None):   返回self.get_model () .objects.all ()   之前      

6在模板目录下创建“搜索/索引/app06/蹦柯肌?app06为自己创建的应用程序的名称)

  

在文件夹中创建“goodinfo_text。txt”文件。(goodinfo为自己创建的数据库的名称)

        #指定索引的属性   {{对象。内容}}(内容为自己创建的表的一个字段把这个字段指定为索引字段)      

<强> 7找到虚拟环境django下安装的干草堆目录。

     /home/python/.virtualenvs/django/lib/python2.7/网站/干草堆/后端/      

在上面的目录中创建ChineseAnalyzer.py文件。

        进口jieba   从发出嘶嘶声。分析进口记号赋予器,令牌      类ChineseTokenizer(记号赋予器):   def __call__(自我价值,位置=False,识字课=False,   keeporiginal=False, removestops=True,   start_pos=0, start_char=0,模式=",* * kwargs):   t=令牌(位置、字符removestops=removestops模式=模式,   * * kwargs)   seglist=jieba。削减(价值,cut_all=True)   对w seglist:   t。原始=t。文本=w   t。提高=1.0   如果职位:   t。pos=start_pos + value.find (w)   如果字符:   t。startchar=start_char + value.find (w)   t。endchar=start_char + value.find (w) + len (w)   收益率t      def ChineseAnalyzer ():   返回ChineseTokenizer ()   之前      

<强> 8)复制whoosh_backend.py文件,改为如下名称:

  

注意:复制出来的文件名,末尾会有一个空格,记得要删除这个空格。

  

whoosh_cn_backend.py   

<强> 9)打开复制出来的新文件,引入中文分析类,内部采用jieba分词。

  从进口ChineseAnalyzer .ChineseAnalyzer

  

<强> 10)更改词语分析类。

  

查找         分析仪=StemmingAnalyzer ()      

改为         分析仪=ChineseAnalyzer ()      

<强> 11)初始化索引数据。

  

python管理。py rebuild_index

  

按照提示输入y后生成索引在主目录下会生成一个whoosh_index文件夹其中放置三个索引文件

  

  

按照配置,在管理管理中添加数据后,会自动为数据创建索引,可以直接进行搜索,可以先创建一些测试数据。

django使用全局搜索功能的实例详解