我需要整合在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]:
我已經雖然幾個小隊和論壇,並嘗試了很多設置,但拼寫單元總是無。
任何人都可以幫助我嗎?
感謝您閱讀這篇文章
感謝您的回覆。我試圖添加行並重新啓動solr,但沒有效果,仍然建議是沒有 –
有沒有機會查看它? –
我要去今天自己試一試,同時可以嘗試按Solr的直接使用瀏覽器,而不是代碼,以消除代碼 – Rohan