9

我将 django-haystack (v 2.3.1) 与 solr (v 5.0.0) 和 pysolr (v 3.0.0) 一起使用。我一直在关注教程,并设置了类似myapp/search_indexes.pysearch/indexes/myapp/mymodel_text.txt文件。

./manage.py build_solr_schema > schema.xml工作正常,我已将其复制到 $SOLR_HOME/conf/schema.xml。

当我尝试时出现问题./manage.py rebuild_index。首先,我被要求确认:

警告:这将无法挽回地从连接“默认”中的搜索索引中删除所有内容。
在此之后您的选择是从备份中恢复或通过rebuild_index命令重建。
您确定要继续吗?[是/否] 是

然后,它失败了:

因为您这么说,所以从您的索引中删除所有文档。
无法清除 Solr 索引:[原因:未找到错误 404]
已删除所有文档。
索引 6 个故事
未能将文档添加到 Solr:[原因:未找到错误 404]

我的连接设置是:

#settings.py
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://127.0.0.1:8983/solr',
    },
}

如果我导航到这个 url,我可以看到 solr 管理页面。我确保端口 8983 对 solr 开放(以及 8000 对 Django 开发服务器开放)。

我觉得我可能没有提供足够的连接信息,但还有什么要检查的?

更新
虽然我解决了这个问题,但还有更多问题,这些通过使用 solr (v.4.7.0)来解决,因为 django-haystack 还没有为 solr 5 做好准备(有一个与此相关的问题,但我在github上找不到了。

4

2 回答 2

9

感谢 user366722 建议在设置中指定核心。但是,我忽略了一个更基本的创建核心的步骤!

解决方案:
创建核心,指定核心的名称(例如'default')和端口(例如8983):

$bin/solr create_core -c default -p 8983

然后,只需在您的 haystack URL 设置中指定核心的名称(例如“默认”):

#settings.py
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://127.0.0.1:8983/solr/default',
    },
}

完毕!

现在,我明白了

因为您这么说,所以从您的索引中删除所有文档。
删除所有文件。
索引 3 个故事

更新
在撰写本文时,我还切换到 solr 4.7.0 以使其工作,因为 haystack 还没有为 solr 5.x 做好准备

于 2015-06-04T02:01:31.273 回答
1

有同样的问题并找到了答案:https ://stackoverflow.com/a/29833997/366722 您需要在您的 URL 中指定核心

于 2015-04-23T20:49:57.620 回答