3

我正在尝试遵循 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 > ~/solr-4.2.1/example/solr/conf/schema.xml

我不得不手动创建 conf 目录,因为它不存在。我注意到教程在我使用 4 时使用 Solr 3。conf 目录的位置是否可能改变?

4

3 回答 3

10

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

  • 将架构放在 solr-xyz/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中的相同讨论

于 2013-12-18T15:11:20.073 回答
5

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

有没有人想出一个解决方案?我有完全相同的问题。该字段是这样创建的schema.xml

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

我已经重新启动了 Solr(多次),并且我 100% 肯定我的 schema.xml 代码是正确的。这到底是怎么回事?

编辑:我切换到 Elasticsearch 并且没有问题。但是,我相信其他人会发现对这个问题有用的帮助。

于 2013-07-12T23:04:44.590 回答
1

我不得不克隆 haystack 源代码并进行一些黑客攻击,如下所示:

In the /haystack/management/commands/build_solr_schema.py , I commented DJANGO_ID in the build_context() func. Then in /haystack/templates/search_configuration/solr.xml , I replaced {{ DJANGO_ID }} with "django_id" and everything worked ok.

I think the {{DJANGO_ID}} is not being replaced with "django_id" when you generate schema.xml.

于 2014-01-20T01:24:23.107 回答