Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么django haystack拼写建议()总是没有_Django_Solr_Django Haystack - Fatal编程技术网

为什么django haystack拼写建议()总是没有

为什么django haystack拼写建议()总是没有,django,solr,django-haystack,Django,Solr,Django Haystack,我需要在Django应用程序中集成拼写检查机制。我发现Haystack有拼写建议方法来使用它。因此,我已经安装了haysatck的最新开发版本2.0.0 beta和Django1.4.1 我已经下载了apache-solr-3.6.0,并在中进行了类似的配置 schema.xml ./manage.py build\u solr\u schema>solr-3.6.0/example/solr/conf/schema.xml myapps/mysearch_index.py from hayst

我需要在Django应用程序中集成拼写检查机制。我发现Haystack有拼写建议方法来使用它。因此,我已经安装了haysatck的最新开发版本2.0.0 beta和Django1.4.1

我已经下载了apache-solr-3.6.0,并在中进行了类似的配置

schema.xml

./manage.py build\u solr\u schema>solr-3.6.0/example/solr/conf/schema.xml

myapps/mysearch_index.py

from haystack import indexes

class MovieIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True,use_template=True)
    # other field definition
    suggestions = indexes.FacetCharField()

    def prepare(self, obj):
        prepared_data = super(NoteIndex, self).prepare(obj)
        prepared_data['suggestions'] = prepared_data['text']
        return prepared_data
solrconfig.xml

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
    <str name="queryAnalyzerFieldType">textSpell</str>
    <lst name="spellchecker">
        <str name="name">default</str>
        <str name="field">suggestions</str>
        <str name="spellcheckIndexDir">./spellchecker</str>
        <str name="accuracy">0.7</str>
        <str name="buildOnCommit">true</str>
    </lst>
</searchComponent>
<requestHandler name="/spell" class="solr.SearchHandler">
    <lst name="defaults">
        <str name="spellcheck.dictionary">default</str>
        <str name="spellcheck.onlyMorePopular">false</str>
        <str name="spellcheck.extendedResults">false</str>
        <str name="spellcheck.count">1</str>
    </lst>
    <arr name="last-components">
        <str>spellcheck</str>
    </arr>
</requestHandler>
重新启动solr搜索引擎

cd examples/solr
java -jar start.jar
重建索引

python manage.py rebuild_index
# 9905 entries indexed
通过django shell进行测试

In [1]: from haystack.query import SearchQuerySet
In [2]: len(SearchQuerySet())
Out[3]: 9905
In [4]: sqs = SearchQuerySet().auto_query('spider')
In [5]: suggestion = sqs.spelling_suggestion()
In [6]: print suggestion
None
In [7]:
我浏览了几个博客和论坛,尝试了很多设置,但拼写建议总是没有

有人能帮我吗


感谢您阅读本文

您必须在solr配置中为默认请求处理程序启用拼写检查。haystack文档中也提到了这一步,您在问题中也提到了这一步

<requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
    <arr name="last-components">
        <str>spellcheck</str>
    </arr>
</requestHandler>
如果不这样做,那么这应该会解决它。若你们仍然面临问题,或者这一步也完成了,那个么我认为你们应该试着直接在浏览器中查询solr,以检查那个里的建议是否有效,因为这将确保你们的solr设置正确


如果您仍然面临问题,请告诉我,我会亲自尝试。

谢谢您的回复。我尝试添加行并重新启动了solr,但没有效果,仍然建议没有。您是否有机会查看它?我今天将亲自尝试,同时您是否可以尝试直接使用浏览器而不是代码来访问solr,以消除代码中的任何问题尝试直接使用solr运行拼写检查,使用我尝试过的,但没有更改。你能把所有的文件都贴出来供参考吗?
<requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
    <arr name="last-components">
        <str>spellcheck</str>
    </arr>
</requestHandler>