我正在尝试将Haystack与Solr整合.当我尝试构建索引时,我从SOLR收到错误"Unknown field django_id".是什么导致这种情况发生?
我正在为django构建一个solr实例,但是solr提供的例子非常详细,有许多与haystack无关的东西.一个包含拼写建议,更多关键词和分面的样本,没有干草堆不使用的额外内容,这将有助于我了解需要什么和不需要什么.
我想导出我在查询集中的结果,该查询集是从haystack搜索视图中获取的.为了做到这一点,我发现最好的方法是异步执行,所以我使用Celery和Rabbitmq来管理任务,然后创建文件并迭代所有结果,然后通过电子邮件通知用户该文件已准备好让他们抓住它.但是,为了传递Celery的QuerySet,我需要序列化它.
有快速的方法吗?或者我应该复制请求参数并重做搜索?
我已经在网上阅读了入门文档和其他一些示例.这就是我的search_indexes.py看起来像:
from haystack.indexes import *
from haystack import site
from models import Entry
class EntryIndex(SearchIndex):
text = CharField(document=True)
headline = CharField(model_attr='headline')
subheadline = CharField(model_attr='subheadline')
category = CharField(model_attr='category__name')
author = CharField(model_attr='get_author')
email = CharField(model_attr='get_email')
tags = CharField(model_attr='tags')
content = CharField(model_attr='content')
def get_queryset(self):
return Entry.objects.exclude(dt_published=None).order_by('-is_featured', '-dt_published', '-dt_written', 'headline')
site.register(Entry, EntryIndex)
Run Code Online (Sandbox Code Playgroud)
但是当我搜索时,我没有得到任何结果.奇怪的是,如果我使用搜索短语'a'或任何其他单个字母,我会得到看起来像该死的东西中的每一个条目.
无论如何......在我看来,搜索引擎并没有在任何领域寻找.:/
这条线以下的任何东西都不太相关(它有效,相信我):
我的看法:
from haystack.views import SearchView
class CustomSearchView(SearchView):
def __name__(self):
return "CustomSearchView"
def extra_context(self):
return common(self.request)
def search(request):
return CustomSearchView(template='news/search_results.html')(request)
Run Code Online (Sandbox Code Playgroud)
和search_results.html:
{% extends "content.html" %}
{% load tagging_tags %}
{% …Run Code Online (Sandbox Code Playgroud) 我刚刚安装Solr并正在进行Haystack一个Django项目.在本 Haystack教程之后,我创建了一个schema.xml,但我不确定将它放在Solr安装中的哪个位置.
我的Solr安装位于这样的目录中:/solr我正在使用此命令启动Solr服务./solr/examplejava -jar start.jar
有什么想法放置schema.xml以及如何告诉Solr使用它?
我使用django haystack和xapian作为后端搜索引擎.我正在使用FacetedSearchView和FacetedSearchForm面对搜索.我已经searchqueryset转到了FacetSearchView我的urls.py文件中.
但问题是我无法searchqueryset在模板中访问它.我想要做的就是计算searchqueryset找到的对象数量.
在shell中我可以用S实现它earchQuerySet().filter(content="foo").count(),我怎样才能在模板中做到这一点?请指导.我想要与搜索匹配的对象总数.
我正在使用Haystack进行搜索,返回的结果是SearchQuerySet包含None元素:
>> SearchQuerySet().models(Question, Document, Idea)
>> [<SearchResult: idea.idea (pk=3875)>, None, None, None]
Run Code Online (Sandbox Code Playgroud)
运行rebuild_index没有帮助.如果我从第一行删除.models()调用,问题就会消失.我可以从结果中筛选出无元素,但我想知道这是否是预期的行为?
我正在使用Django 1.4,Whoosh和Haystack 2.0.0-beta
所以我在一周前在我们的BETA应用程序中使用ElasticSearch实现了Haystack.我可以注意到的一件事是,通过Haystack和Django的ORM,将一些数据(大量)返回给我们的用户(例如列出应用程序中的所有用户)要快得多.现在,我将发布REST服务(使用TastyPie),以便在接下来的几周内为可能的平板电脑提供服务,因为我希望能够从iPad,Nexus平板电脑等访问这些信息.
我想知道的一件事是,我应该何时查询ORM与Haystack/ElasticSearch?例如,如果平板电脑上的用户请求特定的一组用户,我们是应该让TastyPie查询ORM,还是转到ElasticSearch?
如果我们看看这个答案Django:Haystack或ORM,我们都同意DB可以检索和写入数据.但是,我们可以说,一旦搜索引擎更新,Haystack/ElasticSearch可以更快地检索更快的速度吗?
我有点困惑的是,如果它更快,我们不应该查询Haystack吗?!
看起来好像有弹性搜索支持模糊查询(http://www.elasticsearch.org/guide/reference/query-dsl/fuzzy-query/)但是我无法找到让django-haystack通过该选项的方法.
我挖到了django-haystack搜索,看起来好像在使用elasticsearch后端时使用'match_all'查询.是否有可能在不必修改django-haystack源代码的情况下获得模糊匹配行为?
Haystack来源:https://github.com/toastdriven/django-haystack/blob/master/haystack/backends/elasticsearch_backend.py(build_search_kwargs方法是我怀疑我需要更改的方法)
我试图使用Django Haystack进行搜索,然后在检索结果时,我需要将这些结果传递给我的Django Rest Framework序列化程序.
Django Rest Framework serializers.ModelSerializer要求为序列化程序发送一个对象查询集,以便能够将这些对象及其数据库字段序列化.
当我创建我的API视图并使用搜索来获取结果时,haystack返回searchqueryset.
如何在不执行以下操作的情况下将此searchqueryset放入django查询集中:
article_queryset = Article.objects.filter(id__in=[i.object for i in searchqueryset])
Run Code Online (Sandbox Code Playgroud)
可以想象,有时搜索可以返回超过1000个搜索结果,这意味着上述效率非常低.
现在,Django休息框架允许我对返回的对象进行分页.我在每页上分成30个对象.我怎么可能用我的Haystack searchqueryset做同样的事情?
关于如何使用Haystack和Django Rest Framework的任何建议或想法都会很棒.别人如何做类似事情的例子也很酷:)