2013-01-11 41 views
1

我需要整合在Django應用程序的拼寫檢查機制。我發現Haystack有「拼寫建議」方法來使用它。所以我用Django(1.4.1)安裝了haysatck的最新開發版(2.0.0 beta)。爲什麼Django的草垛spelling_suggestion()總是無

我已經下載了Apache的Solr的-3.6.0,並配置爲像doc

schema.xml中

./manage.py build_solr_schema>的solr-3.6.0 /示例/ 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> 

settings.py

HAYSTACK_CONNECTIONS = { 
    'default': { 
    'ENGINE': 'haystack.backends.solr_backend.SolrEngine', 
    'URL': 'http://127.0.0.1:8983/solr', 
    'TIMEOUT': 60 * 5, 
    'INCLUDE_SPELLING': True, 
    }, 
} 

重新啓動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]: 

我已經雖然幾個小隊和論壇,並嘗試了很多設置,但拼寫單元總是無。

任何人都可以幫助我嗎?

感謝您閱讀這篇文章

回答

0

您必須啓用拼寫檢查在Solr的配置默認請求處理程序。在乾草堆文檔中還提到了你在你的問題中提到的步驟。

<requestHandler name="standard" class="solr.StandardRequestHandler" default="true"> 
    <arr name="last-components"> 
     <str>spellcheck</str> 
    </arr> 
</requestHandler> 

如果沒有這樣做,那麼這應該解決它。如果你仍然面臨問題或這一步也完成了,那麼我認爲你應該直接在瀏覽器中查詢solr來檢查建議是否在那裏工作,因爲這將確保你的solr安裝正確。

請讓我知道如果你仍然面臨的問題,我會親自嘗試。

+0

感謝您的回覆。我試圖添加行並重新啓動solr,但沒有效果,仍然建議是沒有 –

+0

有沒有機會查看它? –

+0

我要去今天自己試一試,同時可以嘗試按Solr的直接使用瀏覽器,而不是代碼,以消除代碼 – Rohan