1

私はelasticsearch-dsl-py 0.0.5とhttps://github.com/HonzaKral/es-django-exampleの例をDjangoで使用しています。

私はDocTypeを持っています:

class PageDoc(DocType):
    title = String(analyzer='snowball')

index = Index('my_index')
index.doc_type(PageDoc)

そして、以下の管理コマンドを使用してインデックスを更新します。Pageインデックスを作成しようとしている Django モデルです。

class Command(BaseCommand):
    def handle(self, *args, **kwargs):
        self.es = connections.get_connection()
        index.delete(ignore=404)
        index.create()
        self.verbose_run(Page)

    def verbose_run(self, model, report_every=100):
        name = model._meta.verbose_name
        print('Indexing %s: ' % name, end='')
        start = time.time()
        cnt = 0
        for _ in streaming_bulk(
                self.es,
                (m.to_search().to_dict(True) for m in model.objects.all().iterator()),
                index=settings.ES_INDEX,
                doc_type=name.lower()):
            cnt += 1
            if cnt % report_every:
                print('.', end='')

        print('DONE\nIndexing %d %s in %.2f seconds' % (
            cnt, name, time.time() - start
        ))

http://127.0.0.1:9200/my_index/_mapping?prettyの (簡略化された) 出力は次のとおりです。

{
  "my_index" : {
    "mappings" : {
      "page" : {
        "properties" : {
          "title" : {
            "type" : "string"
          }
        }
      }
    }
  }
}

完全一致のクエリを実行できますが、ステミングが機能しません。Snowball アナライザーがタイトル フィールドに追加されないのはなぜですか?

4

0 に答える 0