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"
          }
        }
      }
    }
  }
}

我可以查询完全匹配,但词干提取不起作用。为什么雪球分析器没有添加到标题字段?

4

0 回答 0