首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么django haystack spelling_suggestion()总是没有

为什么django haystack spelling_suggestion()总是没有
EN

Stack Overflow用户
提问于 2013-01-11 20:14:27
回答 1查看 500关注 0票数 1

我需要在Django应用程序中集成拼写检查机制。我发现海斯塔克有“拼写建议”的方法来使用它。因此,我已经用Django(1.4.1)安装了最新的haysatck开发版本(2.0.0 beta)。

我下载了apache 3.6.0,并在文档中配置为类似的。

schema.xml

./manage.py build_solr_schema >solr-3.6.0/示例/solr/conf/schema.xml

myapps/mysearch_index.py

代码语言:javascript
复制
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

代码语言:javascript
复制
<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>

settings.py

代码语言:javascript
复制
HAYSTACK_CONNECTIONS = {
  'default': {
    'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
    'URL': 'http://127.0.0.1:8983/solr',
    'TIMEOUT': 60 * 5,
    'INCLUDE_SPELLING': True,
  },
}

重新启动solr搜索引擎

代码语言:javascript
复制
cd examples/solr
java -jar start.jar

重建索引

代码语言:javascript
复制
python manage.py rebuild_index
# 9905 entries indexed

通过django shell进行测试

代码语言:javascript
复制
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]:

我已经通过了几个博客和论坛,并尝试了很多设置,但spelling_suggestion总是没有。

有谁可以帮我?

谢谢你阅读这篇文章

EN

回答 1

Stack Overflow用户

发布于 2013-01-11 21:02:12

您必须在solr中为默认请求处理程序启用拼写检查。在干草堆文档中也提到了这个步骤,您在问题中也提到了这个步骤。

代码语言:javascript
复制
<requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
    <arr name="last-components">
        <str>spellcheck</str>
    </arr>
</requestHandler>

如果这还没有完成,那么这应该可以修复它。如果您仍然面临问题,或者这一步也完成了,那么我认为您应该尝试在浏览器中直接查询solr,以检查建议是否在那里工作,因为这将确保您的solr被正确设置。

如果你还面临问题,请告诉我,我会亲自试一试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14285945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档