6

モデル フィールドで部分文字列値を検索する必要があります。Index と SearchQuerySet があります。

これが Elasticsearch 構成です。

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'haystack',
    },

}

私のインデックス。

class ElementIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)

    #model fields
    title_element = indexes.EdgeNgramField(model_attr='title')
    clean_content = indexes.EdgeNgramField(model_attr='clean_content')
    def get_model(self):
       return Element

    def index_queryset(self, using=None):
        """Used when the entire index for model is updated."""
        return Element.objects.filter(updatetime__lte=datetime.datetime.now())

私のカスタム検索。

SearchQuerySet().filter(title_element=clean_value)

私のデータベースには「HolaMundoTest」という値があり、「Hola」または「HolaM」で検索しようとすると結果が見つかりますが、「Mundo」または「mundo」または「laMun」を試しても一致するものはありません。

なにが問題ですか?理解できない。

ソースhttp://django-haystack.readthedocs.org/en/v2.1.0/autocomplete.html

私は使っている:

  • -ジャンゴ1.5.1
  • -django-haystack==2.1.0
  • -elasticsearch-0.90.5
  • -pyelasticsearch==0.6

回答ありがとうございます-

4

1 に答える 1