无法为solr / haystack构建索引:未知字段'django_id'

时间:2013-04-07 21:29:02

标签: django solr django-haystack

我正在尝试跟随干草堆教程。运行manage.py rebuild index

时遇到错误

我收到以下错误:

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.
/Users/heri0n/python_env/lib/python2.7/site-packages/django/db/models/fields/__init__.py:808: RuntimeWarning: DateTimeField received a naive datetime (2013-04-07 16:14:15.481145) while time zone support is active.
  RuntimeWarning)
Indexing 1 notes.
Failed to add documents to Solr: [Reason: None]
<response><lst name="responseHeader"><int name="status">400</int><int name="QTime">6</int></lst><lst name="error"><str name="msg">ERROR: [doc=haystacktester.note.3] unknown field 'django_id'</str><int name="code">400</int></lst></response>

我确实运行了manage.py build_solr_schema&gt; 〜/ solr的-4.2.1 /示例/ solr的/ CONF / schema.xml中

我必须手动创建conf目录,因为它不存在。我注意到本教程使用的是Solr 3,而我正在使用。斗篷的位置是否也改变了?

3 个答案:

答案 0 :(得分:10)

问题在于Solr(haystack文档使用v3.5.0,这里你可能正在使用最新版本)找不到配置文件。这3个步骤对我有用

  • 将架构放在solr-x.y.z / example / solr / collection1 / conf / schema.xml

  • 在架构中将stopwords_en.txt更改为lang / stopwords_en.txt

  • 将版本字段(如下所述)添加到字段部分

    中的架构中
    <field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>
    

有关详细信息,请查看GitHub

中的相同讨论

答案 1 :(得分:4)

这更像是评论,但由于我缺乏积分,我无法发表评论......

有没有人想出一个解决方案呢?我有完全相同的问题。该字段正在schema.xml中创建:

<field name="django_id" type="string" indexed="true" stored="true" multiValued="false"/>

我重启了Solr(多次),我100%肯定我的schema.xml代码是正确的。到底发生了什么事?

编辑:我切换到Elasticsearch并没有任何问题。但是,我相信其他人会在这个问题上找到帮助。

答案 2 :(得分:1)

我不得不克隆干草堆源代码并做一些如下的黑客攻击:

在/haystack/management/commands/build_solr_schema.py中,我在DJANGO_ID func中评论了build_context()。 然后在/haystack/templates/search_configuration/solr.xml中,我将{{ DJANGO_ID }}替换为"django_id",一切正常。

我认为生成{{DJANGO_ID}}"django_id"并未被schema.xml替换。