django全文搜尋學習心得(四)sphinx篇

2022-08-28 13:12:12 字數 3840 閱讀 4613

很遺憾,haystack+ sphinx 沒有文件可以檢視,菜鳥們都安息了。還好有django-sphinx 。這玩意挺好!!!!

安裝:

django-sphinx  , 這個現在已經是非常穩定的了,所以github上邊也不會再有任何新的發行版了,穩定才是最好的保障。所以直接pip install django-sphinx 安裝吧

d:\sphinx

然後直接建立乙個data資料夾 即d:\sphinx\data\ (在配置中使用的儲存索引的地方)     

使用,這個超簡單的,下面是官方的用法說明

from djangosphinx.models import

sphinxsearch

class

mymodel(models.model):

search = sphinxsearch() #

預設索引名是你的表名即model名

search = sphinxsearch('

index_name

') #

自己設定索引名

searchdelta =sphinxsearch(

index='

index_name delta_name',

weights=,

mode='

sph_match_all',

rankmode='

sph_rank_none',

)#以上是在model中使用

#下面是在views.py中使用查詢方法

queryset = mymodel.search.query('

query')

results1 = queryset.order_by('

@weight

', '

@id', '

my_attribute')

results2 = queryset.filter(my_attribute=5)

results3 = queryset.filter(my_other_attribute=[5, 3,4])

results4 = queryset.exclude(my_attribute=5)[0:10]

results5 = queryset.count()

下面介紹我在練習中使用的例子

from django.db import

models

from djangosphinx.models import

sphinxsearch

class

chang(models.model):

title=models.charfield(max_length=200)

body=models.textfield()

tags=models.charfield(max_length=200)

search=sphinxsearch(index='

sphinxtest_chang

')

然後再view中使用

from model import chang

from django.shortcuts import render_to_response

defsearch(request):

if request.method == '

post':

query=request.post.get('

query

',none)

r=chang.search.query(query)

chang=list(r)

context=

else

: chang=list()

context=

return render_to_response('

search/search.html

',context)

再看我的templates\sphinxtest\search.html

doctype html

>

<

html

>

<

head

>

<

title

>

title

>

head

>

<

body

>

<

div>

<

form

action

="/search/"

method

="post"

>

<

input

type

="text"

name

="query"

/>

<

input

type

="submit"

>

form

>

<

p>your search for 「

<

strong

>}

strong

>

」 had <

strong

>}

strong

> results.

p>

<

p>search_meta object dump: }

p>

<

hr/>

<

h3>}

h3>

<

h4>}

h4>

<

p>(weight: })

p>

<

p>story.sphinx object dump: }

p>

div>

body

>

html

>

最後看看我的settings.py

'djangosphinx',

'sphinxtest',

...)

#sphinx 0.9.9

sphinx_api_version = 0x116

和urls.py配置

urlpatterns = patterns('',(r

'^search/$

','sphinxtest.views.search'),

)

準備工作做完之後,我們開始建立索引吧

python manage.py generate_sphinx_config sphinxtest >> d:\sphinx\bin\sphinx.conf  

#這個本身sphinx.conf應該在d:\sphinx\下,我這樣位址會建立乙個新的,使用時也用他,不過這個是不完全的,建議直接參考d:\sphinx\下的sphinx-min.conf

直接上我的配置吧

source sphinxtest_chang

index sphinxtest_chang

indexer

searchd

sphinx 建立索引

cd 到 d:\sphinx\bin\

indexer --config sphinx.conf sphinxtest_chang

開啟sphinx服務

cd 到 d:\sphinx\bin\

searchd --config sphinx.conf

最後執行程式,檢視結果吧,記得網資料庫中新增點資料哦,否則你建立出的索引是搜不到結果的。

django全文搜尋學習心得(三)whoosh 篇

基於djang haystack,咱們可以自由切換搜尋引擎了。whoosh 的使用跟solr 基本一樣 模板使用什麼的都是一樣的,主要是對whoosh 進行一些修改,讓其支援中文。settings.py 的配置 haystack connections 這裡邊使用主要參考 這篇文章,他給出了實際操作...

搜尋學習心得

在學習了眾多搜尋的方式後,不由感慨。啊,太巨了!今天huayucaiji我就給大家講一講c 搜尋的心得吧!深度優先搜尋 廣度優先搜尋 迭代加深搜尋 乙個乙個講吧!深度優先搜尋 下簡稱 深搜 簡稱dfs。是簡潔明瞭的搜尋方式,以遞迴的方式實現。比較簡單 好,廢話不多說,讓我們看一道題全排列問題 原題見...

Django的學習心得

初次接觸django模板,好多地方比較模糊,按著django官網給的學習6步驟,一步一步搞懂django,首先,咱們在命令列打下python c import django print django.get version 獲取django的版本號,此時django的版本號為1.8.2 命令列輸入 ...