23

Click here to load reader

總之來講講 Search

Embed Size (px)

Citation preview

Page 1: 總之來講講 Search

總之來講講 Search

Andy Dai [email protected]

Page 2: 總之來講講 Search

What is search?

Page 3: 總之來講講 Search
Page 4: 總之來講講 Search

找 Django 相關的⽂文件

$ grep -ri django *

docs = Document.objects.filter( Q(title__icontain="django")| Q(body__icontain="django") )

Page 5: 總之來講講 Search

Not Scalable!

Page 6: 總之來講講 Search

這問題其實很早之前就被解決了

Page 7: 總之來講講 Search
Page 8: 總之來講講 Search

Inverted Index

django

flask

python

web

ruby

file1

file1

file2

file2

file3file2file1 file4

file4

Page 9: 總之來講講 Search

search (python and django)

django

flask

python

web

ruby

file1

file1

file2

file2

file3file2file1 file4

file4

file4

Page 10: 總之來講講 Search

Phrase Search

django

web

file1 (1,3)

file3 (41)file2 (3,4)file1 (2) file4 (53)

Page 11: 總之來講講 Search

Search (“django web”)

django

web

file1 (1,3)

file3 (41)file2 (3,4)file1 (2) file4 (53)

Page 12: 總之來講講 Search

Building Inverted Index“Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.”

django high level python web framework

encourage rapid development clean pragmatic

design

Page 13: 總之來講講 Search

What we do• Split into tokens

• Drop stop words

• Normalize

• Lowercase

• stemming

Page 14: 總之來講講 Search

Congratulations! Now you can build you own search

Page 15: 總之來講講 Search

今天不是要講 Django + ElasticSearch 嗎?

Page 16: 總之來講講 Search
Page 17: 總之來講講 Search

ElasticSearch

• Open Source

• Distributed

• Document-based

• JSON over HTTP

Page 18: 總之來講講 Search
Page 19: 總之來講講 Search

Multiple Backends

• ElasticSearch

• Whoosh

• Solr

• Xapian

Page 20: 總之來講講 Search

pip  install  django-­‐haystack  pip  install  elasticsearch  

Page 21: 總之來講講 Search

設定

• setting.py

• search_indexes.py

• search template for document

Page 22: 總之來講講 Search

讓我們直接來看 Code

https://github.com/daikeren/es_test

Page 23: 總之來講講 Search

Q&A