django-haystack+solr实现搜索
2017-02-06 15:25
387 查看
1.首先下载solr。http://mirror.bjtu.edu.cn/apache/lucene/solr/3.6.1/apache-solr-3.6.1.zip下载解压即可
cd example/
java -jar start.jar
即可启动solr了,可以进入http://localhost:8983/solr/admin/看看效果。
ps. 这里有个地方要注意的,将solr/conf/stopwords.txt改名为stopwords_en.txt,不然会出错的
2.安装pysolr。sudo pip install pysolr
haystack就不介绍了,看上篇就知道了。
3.修改settings.py
}
4.新建models如下:
5.在blog目录下新建search_indexes.py:
6.新建templates/search/indexes/blog/blog_text.txt:
7.在urls.py中加入(r’^$’, include(‘haystack.urls’)),
8.新建templates/search/search.html:
<!-- lang: html -->
<h2>Search</h2>
<form method="get" action=".">
<table>
{{ form.as_table }}
<tr>
<td> </td>
<td>
<input type="submit" value="Search">
</td>
</tr>
</table>
{% if query %}
<h3>Results</h3>
{% for result in page.object_list %}
<p>
Title: {{ result.object.title }}
</p>
<p>
Content: {{ result.object.content }}
</p>
{% empty %}
<p>No results found.</p>
{% endfor %}
{% if page.has_previous or page.has_next %}
<div>
{% if page.has_previous %}<a href="?q={{ query }}&page={{ page.previous_page_number }}">{% endif %}« Previous{% if page.has_previous %}</a>{% endif %}
|
{% if page.has_next %}<a href="?q={{ query }}&page={{ page.next_page_number }}">{% endif %}Next »{% if page.has_next %}</a>{% endif %}
</div>
{% endif %}
{% else %}
{# Show some example queries to run, maybe query syntax, something else? #}
{% endif %}
</form>
9.将schema.xml导入:python manage.py build_solr_schema > /path_to_solr/example/solr/conf/
10.重建索引:python manage.py rebuild_index
大致流程就这样的。
cd example/
java -jar start.jar
即可启动solr了,可以进入http://localhost:8983/solr/admin/看看效果。
ps. 这里有个地方要注意的,将solr/conf/stopwords.txt改名为stopwords_en.txt,不然会出错的
2.安装pysolr。sudo pip install pysolr
haystack就不介绍了,看上篇就知道了。
3.修改settings.py
<!-- lang: python --> HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.solr_backend.SolrEngine', 'URL': 'http://127.0.0.1:8983/solr' },
}
4.新建models如下:
<!-- lang: python --> class Blog(models.Model): title = models.CharField(max_length=30) content = models.CharField(max_length=140) created_time = models.DateTimeField(auto_now=True) def __unicode__(self): return self.title
5.在blog目录下新建search_indexes.py:
<!-- lang: python --> import datetime from haystack import indexes from blog.models import Blog class BlogIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) title = indexes.CharField(model_attr='title') content = indexes.CharField(model_attr='content') def get_model(self): return Blog def index_queryset(self): return self.get_model().objects.all()
6.新建templates/search/indexes/blog/blog_text.txt:
<!-- lang: html --> {{ object.title }} {{ object.content }}
7.在urls.py中加入(r’^$’, include(‘haystack.urls’)),
8.新建templates/search/search.html:
<!-- lang: html -->
<h2>Search</h2>
<form method="get" action=".">
<table>
{{ form.as_table }}
<tr>
<td> </td>
<td>
<input type="submit" value="Search">
</td>
</tr>
</table>
{% if query %}
<h3>Results</h3>
{% for result in page.object_list %}
<p>
Title: {{ result.object.title }}
</p>
<p>
Content: {{ result.object.content }}
</p>
{% empty %}
<p>No results found.</p>
{% endfor %}
{% if page.has_previous or page.has_next %}
<div>
{% if page.has_previous %}<a href="?q={{ query }}&page={{ page.previous_page_number }}">{% endif %}« Previous{% if page.has_previous %}</a>{% endif %}
|
{% if page.has_next %}<a href="?q={{ query }}&page={{ page.next_page_number }}">{% endif %}Next »{% if page.has_next %}</a>{% endif %}
</div>
{% endif %}
{% else %}
{# Show some example queries to run, maybe query syntax, something else? #}
{% endif %}
</form>
9.将schema.xml导入:python manage.py build_solr_schema > /path_to_solr/example/solr/conf/
10.重建索引:python manage.py rebuild_index
大致流程就这样的。
相关文章推荐
- 分享:django-haystack+solr实现搜索
- django-haystack+solr实现搜索
- 分享:django-haystack+solr实现搜索
- 使用Solr快速实现Django的全文搜索[转]
- django+haystack+solr 实现网站全文检索
- Django开发个人博客网站——19、通过Django Haystack实现搜索功能(上)
- Django之站内搜索-Solr,Haystack
- 使用solr实现pinyin分词,针对短词搜索,比如电影搜索
- 利用SOLR搭建企业搜索平台 之八(solr 实现去掉重复的搜索结果,打SOLR-236_collapsing.patch补丁)
- 实现Django的全文检索功能(三):进一步学习Haystack
- 实现Django的全文检索功能(三):进一步学习Haystack
- (十) 在solr中实现同义词搜索
- django全文搜索学习心得(一)haystack 篇
- 使用 Apache Solr 实现更加灵巧的搜索,第 1 部分: 基本特性和 Solr 模式
- 使用 Apache Solr 实现更加灵巧的搜索,第 1 部分: 基本特性和 Solr 模式
- Solr中文搜索纠错功能实现
- Solr分布式搜索技术实现分析
- 使用 Apache Solr 实现更加灵巧的搜索,第 2 部分: 用于企业的 Solr
- 通过对QParser类的继承 实现SOLR 半匹配检索(模糊搜索/模糊检索) (一)
- solr实现满足指定距离范围条件的搜索