django_sphinx_db是一個簡單的Django的數據庫後端,允許與獅身人面像的互動,通過SphinxQL。它基本上是默認的Django MySQL後台有一些變化的獅身人面像。
SphinxQL是獅身人面像的searchd支持MySQL的複製模式。它可以讓你通過普通的舊SQL語法查詢索引。如果您正在使用RT(實時)索引,你還可以添加和索引的更新文件。
這個後端,就是要configued作為Django的settings.py的數據庫。
該軟件包提供了一個Manager類,SQLCompiler套件和支持代碼,以使這一切成為可能。
用法
首先,你必須定義在Django的配置數據庫連接。你還必須安裝獅身人面像數據庫路由器,並添加django_sphinx_db您INSTALLED_APPS列表。
#安裝django_sphinx_db:
INSTALLED_APPS + =('django_sphinx_db',)
#這是在數據庫中的獅身人面像服務器的名稱:
SPHINX_DATABASE_NAME ='斯芬克斯'
#定義連接到獅身人面像
數據庫= {
 “默認”:{
 #你默認的數據庫連接放在這裡...
 },
  SPHINX_DATABASE_NAME:{
 '發動機':'django_sphinx_db.backend.sphinx',
 #數據庫名稱並不重要。
 'NAME':'',
 #沒有用戶名或密碼。
 'USER':'',
 '密碼':'',
 #不要使用本地主機,這將導致使用UDS而不是TCP ...
 “HOST”:“127.0.0.1”,
 '端口':'9306',
 },
}
#...和路線相應...
DATABASE_ROUTERS =(
 “django_sphinx_db.routers.SphinxRouter',
)```
然後定義了一個模型,源於SphinxModel。像往常一樣,該模型將被放置在models.py。
從django_sphinx_db.backend.models進口SphinxModel,SphinxField
類MyIndex(SphinxModel):
 類元:
 #這下位是很重要的,你不想Django的管理
 #表這個模型。
 管理=假
 名稱= SphinxField()
 內容= SphinxField()
 日期= models.DateTimeField()
 大小= models.IntegerField()
配置獅身人面像
現在,你需要生成索引的配置文件。一個管理命令提供給模型定義轉換成一合適的構造。
 蟒蛇manage.py syncsphinx >> /etc/sphinx.conf
 六/etc/sphinx.conf
生成的配置文件應該是一個良好的開端不過,你務必檢查對[獅身人面像配置參考]配置(http://sphinxsearch.com/docs/2.0.2/confgroup-index.html)。
使用Django的ORM與獅身人面像
現在,您可以查詢和使用Django的ORM管理您實時指數。可以插入和更新使用以下方法中的索引文件。下面的示例使用[全文庫](https://github.com/btimby/fulltext)讀取文件內容為純文本。
進口操作系統,時間,全文
#文件添加到索引中。
路徑='resume.doc“
ST = os.stat(路徑)
MyIndex.objects.create(
 名=路徑,
 含量= fulltext.get(路徑,''),
 大小= st.st_size,
 日期= time.strftime(“%Y-%M-%D%H:%M:%S',time.localtime(st.st_mtime)),
)
#更新索引的文檔
DOC = MyIndex.objects.get(PK = 1)
doc.content = fulltext.get(路徑,'')
doc.size = st.st_size
doc.date = time.strftime(“%Y-%M-%D%H:%M:%S',time.localtime(st.st_mtime))
doc.save()
您可以執行使用Django的搜索運算符全文查詢。閱讀Django文檔以獲取更多信息。
MyIndex.objects.filter(content__search ='Foobar的')
查詢是通過直接傳遞給獅身人面像,所以獅身人面像擴展查詢語法得到尊重。
單元測試
獅身人面像後端Django會忽略create_test_db和destroy_test_db電話。配置獅身人面像數據庫時,這些調用將失敗,導致您無法運行測試。然而,這意味著,任何已配置的斯芬克斯數據庫將在測試期間被使用。只要你寫你的測試,考慮到這一點,應該沒有問題。 。記住,你可以使用測試名的數據庫連接參數在測試運行重定向查詢不同的數據庫連接
要求:
- 的Python
- 在Django的
評論沒有發現