1

スペルチェックメカニズムをDjangoアプリケーションに統合する必要があります。Haystackには、それを使用するための「SpellingSuggestions」メソッドがあることがわかりました。そこで、Django(1.4.1)を使用してhaysatckの最新の開発バージョン(2.0.0ベータ版)をインストールしました。

apache-solr-3.6.0をダウンロードし、 docのように構成しました。

schema.xml

./manage.py build_solr_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>

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シェルによるテスト

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は常にNoneです。

誰か助けてもらえますか?

この投稿を読んでくれてありがとう

4

1 に答える 1

0

solr config でデフォルトのリクエストハンドラーのスペルチェックを有効にする必要があります。このステップは、質問で言及した干し草の山ドキュメントにも記載されています。

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

これが行われていない場合は、これで修正されるはずです。それでも問題が発生する場合、またはこの手順も完了している場合は、ブラウザーで直接 solr にクエリを実行して、提案がそこで機能しているかどうかを確認してください。これにより、solr が適切にセットアップされていることが保証されます。

それでも問題が解決しない場合はお知らせください。個人的に試してみます。

于 2013-01-11T21:02:12.823 に答える