Como receber informações sobre seus índices de pesquisa

Amy Unruh, out de 2012
Relações com desenvolvedores do Google

Introdução

Depois que você criar alguns documentos e adicioná-los a alguns índices, frequentemente será útil inspecionar a estrutura e o conteúdo dos índices. Esta lição ensina como fazer isso.

Objetivos

Saber mais sobre os índices da API Search

Pré-requisitos

Esquemas de índice

Cada índice tem um esquema associado usado para interpretar as consultas nesse índice. O esquema é criado dinamicamente a partir dos nomes e tipos de campos presentes em todos os documentos no índice. Portanto, adicionar documentos a um índice também pode causar atualizações no esquema do índice.

Pode ser útil visualizar o esquema de um índice, já que ele permite que você veja a estrutura dos dados nesse índice. Um esquema simples de um índice pode ter a seguinte aparência:

{'comment': ['TEXT'], 'date': ['DATE'], 'author': ['TEXT'], 'count': ['NUMBER']}

Isso mostra que os documentos no índice usam o quatro campos comment, date, author e count com os tipos de campo indicados. Um determinado documento individual não precisa ter usado todos esses campos. O esquema assume a forma de um dicionário em que cada chave é o nome de um campo do documento que foi adicionado ao índice, e o valor correspondente é uma lista dos tipos de campo usados com esse nome de campo. Se você usar o mesmo nome de campo com diferentes tipos de campo (em documentos diferentes, por exemplo), o esquema listará mais de um tipo de campo para esse nome, desta maneira:

{'field1': ['TEXT', 'NUMBER']}

Como exemplo mais complexo, veja o esquema para o índice de documento do produto no aplicativo de exemplo, depois que os dados de amostra foram adicionados a ele. Essa saída mostra os nomes dos campos brutos, não as variáveis de classe que estamos usando em nossos exemplos de código.

{u'category': ['ATOM'], u'publisher': ['TEXT'], u'isbn': ['TEXT'],
 u'description': ['TEXT'], u'name': ['TEXT'], u'author': ['TEXT'],
 u'price': ['NUMBER'], u'title': ['TEXT'], u'pid': ['TEXT'], u'modified': ['DATE'],
 u'tv_type': ['TEXT'], u'ar': ['NUMBER'],
 u'brand': ['TEXT'], u'pages': ['NUMBER'], u'size': ['NUMBER']}

No aplicativo de amostra, esse índice é chamado productsearch1 por padrão. O esquema reflete as duas categorias de documentos do produto usadas pelo aplicativo (books e hd_televisions), mostrando não apenas os principais campos de produtos compartilhados por ambas as categorias, mas também aqueles específicos de uma categoria ou de outra, como author (usado somente por books), tv_type (usado apenas por hd_televisions) e assim por diante.

Como visualizar índices e documentos

Use a seção Cloud Datastore do console do GCP para exibir informações sobre os índices do aplicativo e os documentos que eles contêm.

Como acessar esquemas de índice de maneira programática

Também é possível acessar todos os índices do aplicativo programaticamente, junto com os esquemas de cada um:

from google.appengine.api import search
import logging

for index in search.get_indexes(fetch_schema=True):
    logging.info("index %s", index.name)
    logging.info("schema: %s", index.schema)

As informações do esquema listadas serão semelhantes aos dicionários mostrados acima.

É possível excluir um índice completamente, basta excluir primeiro todos os documentos no índice e depois o esquema do índice.

Resumo e revisão

Nesta lição, examinamos maneiras de receber informações sobre os índices de um aplicativo e respectivos esquemas.

Tente você mesmo com o aplicativo de exemplo: examine os índices do aplicativo no console do GCP e tente adicionar o código da seção anterior (que lista seus índices e esquemas) ao método get() da classe IndexHandler em handlers.py:

class IndexHandler(BaseHandler):
  """Displays the 'home' page."""

  def get(self):
    cat_info = models.Category.getCategoryInfo()
    sort_info = docs.Product.getSortMenu()
    # add this code temporarily to look at your indexes
    for index in search.get_indexes(fetch_schema=True):
      logging.info("index %s", index.name)
      logging.info("schema: %s", index.schema)
    template_values = {
        'cat_info': cat_info,
        'sort_info': sort_info,
        }
    self.render_template('index.html', template_values)

Você deve adicionar esse código apenas temporariamente, porque ele adiciona despesas à solicitação. Quando você reimplanta o aplicativo e examina seus logs quando carrega a página de índice, você verá seus índices e esquemas listados para você.

Agora que trabalhamos com os princípios básicos de indexação e consulta de conteúdo, você já tem as ferramentas para adicionar pesquisa de texto completo aos seus aplicativos do Google App Engine. No entanto, a API Search aceita consultas muito mais sofisticadas do que as que mostramos até agora. Na continuação da aula, Um exame mais aprofundado da API Search do Python, aprofundaremos a construção da consulta de pesquisa e aprenderemos como controlar e classificar os resultados retornados.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Python 2