Django 用Haystack和Solr问题实现搜索
我正在尝试对我的django网站进行搜索 在遵循这些原则的过程中,我发现: 如果您使用的是Solr后端,那么还有一个额外的步骤。索尔氏 配置是基于XML的,因此您需要手动重新生成 模式。您应该Django 用Haystack和Solr问题实现搜索,django,search,solr,django-haystack,Django,Search,Solr,Django Haystack,我正在尝试对我的django网站进行搜索 在遵循这些原则的过程中,我发现: 如果您使用的是Solr后端,那么还有一个额外的步骤。索尔氏 配置是基于XML的,因此您需要手动重新生成 模式。您应该运行./manage.py build\u solr\u schema首先,删除 将XML输出到Solr的schema.XML文件中,然后重新启动Solr 服务器 首先,我不知道把schema.xml放在哪里,在重新搜索之后,我想我应该在我的项目中创建一个文件夹来放置它:myprojectname/solr
运行./manage.py build\u solr\u schema
首先,删除
将XML输出到Solr的schema.XML文件中,然后重新启动Solr
服务器
首先,我不知道把schema.xml放在哪里,在重新搜索之后,我想我应该在我的项目中创建一个文件夹来放置它:myprojectname/solr/schema.xml
。是这样吗
第二个,如何重新启动Solr
更新
我下载了Solr,解压缩它,并将生成的schema.xml放入example/Solr/conf
然后我启动solrjava-jar start.jar
但当我尝试建立索引时:
/manage.py重建索引
我得到:
WARNING: This will irreparably remove EVERYTHING from your search index.
Your choices after this are to restore from backups or rebuild via the `rebuild_index` command.
Are you sure you wish to continue? [y/N] y
Removing all documents from your index because you said so.
All documents removed.
Indexing 1 News.
Failed to add documents to Solr: [Reason: None]
<response><lst name="responseHeader"><int name="status">400</int><int name="QTime">4</int></lst><lst name="error"><str name="msg">ERROR: [doc=news.news.2] unknown field 'django_id'</str><int name="code">400</int></lst></response>
Indexing 1 entries.
Failed to add documents to Solr: [Reason: None]
<response><lst name="responseHeader"><int name="status">400</int><int name="QTime">17</int></lst><lst name="error"><str name="msg">ERROR: [doc=zinnia.entry.2] unknown field 'django_id'</str><int name="code">400</int></lst></response>
警告:这将不可修复地删除搜索索引中的所有内容。
在此之后,您可以选择从备份恢复或通过“rebuild_index”命令进行重建。
您确定要继续吗?[y/N]y
因为您这样说,所以正在从索引中删除所有文档。
删除所有文件。
索引1新闻。
未能向Solr添加文档:[原因:无]
4004错误:[doc=news.news.2]未知字段'django_id'400
索引1个条目。
未能向Solr添加文档:[原因:无]
40017错误:[doc=zinnia.entry.2]未知字段'django_id'400
我验证了我的schema.xml,我确实有:
<field name="django_ct" type="string" indexed="true" stored="true" multiValued="false" />
<field name="django_id" type="string" indexed="true" stored="true" multiValued="false" />
P.S.
我使用的是Django 1.2和Haystack 1.2.7
solr服务器需要一份schema.xml而不是django的副本。我通常在django项目中保留schema.xml的副本以进行版本控制,但solr在那里找不到它 您是本地solr服务器吗?您使用的是托管服务还是远程Solr服务?我在本地开发然后使用websolr b/c我不想为生产配置solr 用于OSX上的本地开发人员 我假设这是OSX上的本地开发,并且您已经安装了自制软件(假设-如果不是这种情况,请提供更多信息): 这将在某个地方安装Solr,比如:
/usr/local/ceral/Solr/…
注意:当我在本地开发时,我喜欢使用fabric来运行部署和一些启动任务
因此,在我的fabfile.py中,我有一个fabric命令将schema.xml复制到正确的文件中,并启动solr服务器(我只是在cmd行运行fab solr
)
注意:如果不使用fabric,可以在命令行上运行这些命令。solr服务器需要schema.xml而不是django的副本。我通常在django项目中保留schema.xml的副本以进行版本控制,但solr在那里找不到它 您是本地solr服务器吗?您使用的是托管服务还是远程Solr服务?我在本地开发然后使用websolr b/c我不想为生产配置solr 用于OSX上的本地开发人员 我假设这是OSX上的本地开发,并且您已经安装了自制软件(假设-如果不是这种情况,请提供更多信息): 这将在某个地方安装Solr,比如:
/usr/local/ceral/Solr/…
注意:当我在本地开发时,我喜欢使用fabric来运行部署和一些启动任务
因此,在我的fabfile.py中,我有一个fabric命令将schema.xml复制到正确的文件中,并启动solr服务器(我只是在cmd行运行fab solr
)
注意:如果不使用fabric,可以在命令行上运行这些命令。我也遇到同样的问题,重建任务失败。对我来说,解决办法是:
我也有同样的问题,重建任务失败了。对我来说,解决办法是:
是的,ubuntu下的本地开发,已经安装,pip install pysolr,我仍然找不到solr的位置,是否有cmd或其他东西可以告诉我安装路径pysolr不是一个solr服务器,它是一个用于与solr服务器通信的python包装器。我不太喜欢ubuntu,看看这个:或者我安装了它,将shema放在colr/conf中,然后启动它,但是当我重建索引时,我得到:未能将文档添加到Solr:[原因:无]错误404…将完整堆栈跟踪添加到您的问题中?我不能不看到它就调试。虽然404错误表明它找不到您的sorl服务器。您是否在正确的设置变量中为solr服务器设置了正确的地址?例:
HAYSTACK\u SOLR\u URL='1〕http://127.0.0.1:8983/solr“
@MadeehaAmeer,好吧,我也遇到了类似的问题。我的问题是v2.x不能创建好的schema.xml。降级到1.2.7,生成solr模式,升级到2.x并使用旧模式,你应该没事。是的,ubuntu下的本地开发,已经安装,pip install pysolr,我仍然找不到solr位置,是否有cmd或其他东西可以让我知道安装路径pysolr不是solr服务器,它是一个python包装器,用于与solr服务器通信。我不太喜欢ubuntu,看看这个:或者我安装了它,将shema放在colr/conf中,然后启动它,但是当我重建索引时,我得到:未能将文档添加到Solr:[原因:无]错误404…将完整堆栈跟踪添加到您的问题中?我不能不看到它就调试。虽然404错误表明它找不到您的sorl服务器。您是否在正确的设置变量中为solr服务器设置了正确的地址?例:HAYSTACK\u SOLR\u URL='1〕http://127.0.0.1:8983/solr“
@MadeehaAmeer,好吧,我也遇到了类似的问题。我的问题是v2.x不能创建好的schema.xml。道氏
brew install solr
def solr() :
# build a new updated schema.xml (changes to indexes/models may require this so always do it for local testing)
local('python manage.py build_solr_schema > schema.xml')
# copy the schema.xml into the proper directory
local('cp schema.xml /usr/local/Cellar/solr/3.6.0/libexec/example/solr/conf/schema.xml')
# start the solr server
local('cd /usr/local/Cellar/solr/3.6.0/libexec/example && java -jar start.jar')