Acessar


Esqueceu a senha?
Cadastrar
 

Buscas no portal_catalog


Versão testada: Plone 2.5.5

Após uma discurção na lista zope-pt, resolvi escrever um artigo dando algumas dicas sobre a busca de objetos no portal_catalog,que é a ferramenta principal que armazena toda esta informação, que é uma versão um pouco diferente e estendida da ferramenta subjacente a ZCatalog.


Catálogo


O catálogo fornece três elementos chaves para o site Plone: Isto cria índices de conteúdo, prende a metadata sobre o conteúdo no índice, e fornece a interface de procura para rapidamente examinar o conteúdo de seu site Plone.

A primeira parte do trabalho do catálogo é construir indicadores do conteúdo. Um índice fornece primeiramente um método para rapidamente e eficientemente procurar o conteúdo. Para está razão, o conteúdo do índice não é projetado para ser claro ou fazer sentido. É especialmente projetado para fazer procuras rapidamente e eficientemente. Quando você faz uma procura em site Plone, você procura os indicadores, e o catálogo irá retornar combinando o resultado com a pergunta.


Tipos Disponíveis de Índices.


DateIndex Isto é projetado para posicionar datas, e isto deixa você fazer buscas por datas e horas.

DateIndexRange Este é uma implementação mais eficiente de DateIndex para casos onde você tem duas datas, como começa e termina datas e fazendo várias procuras naquelas datas.

FieldIndex Isto trabalha com cada resultado automaticamente e permite você procurar em o que quer que o conteúdo possa conter.

KeywordIndex Isto pega a seqüência de palavras-chave e dividi separando-as. Irá retornar um resultado se qualquer palavra-chave no índice combinando com a pergunta dada. Isto é o ideal para procurar assuntos ou palavras-chave nos objetos.

PathIndex Isto indica o caminho de um objeto, como /Members/jane/myDocument, como uma lista de objetos. Isto permite você perguntar o catálogo por todo conteúdo de Members sem ter que pedir a pasta. Um indicador Path irá retornar qualquer coisa abaixo da pasta Members.

TextIndex Isto e um antigo índice de texto que pega o texto, o divide, e o lista em forma de índice. Veja ZCTextIndex.

TopicIndex Isso constrói resultados pré-definidos no momento de catalogar. È usado para pedidos bastante requeridos.

ZCTextIndex Este é um novo índice que fornece capacidade de procura de texto-completo eficiente em partes de texto. Suporta um grande número de características, que serão discutidas depois em detalhes.

Você pode ver que os índices são definidos em catálogos clicando em portal_catalog e selecionando a aba Indexes. Isto vai te dar a lista de todos os índices definidos no seu site Plone. As colunas são os nomes dos índices, do tipo, do numero de batidas, de quando o índice foi modificado na ultima vez. Os tipos de indicadores foram cobertos momentaneamente, mas a Tabela 11-2 descreve que todos os índices padrões estão em um site Plone.


Índices padrões que são ajustados no Plone


Creator - FieldIndex Este é o nome do usuário que criou o objeto.

Date - FieldIndex Está é a data efetiva; se não apresente, é a ultima data modificada.

Description - TextIndex O campo de descrição.

SearchableText - ZCTextIndex A descrição, título, e corpo do objeto com um pedaço de texto que se pode procurar.

Subject - KeywordIndex As palavras-chave para um artigo.

Title - TextIndex Titulo do artigo.

Type  - FieldIndex O tipo portal como definido na ferramenta portal_types.

allowedRolesAndUsers - KeywordIndex Quem pode ver este conteúdo; este é um modo eficiente para examinar isto assim você pode filtrar a procura dos resultados

created - FieldIndex Quando o item foi criado.

effective - FieldIndex Quando um item será eficaz.

end - FieldIndex Somente para eventos, quando o evento irá terminar.

expires - FieldIndex Quando o item irá expirar e não será por muito tempo visível.

getId - FieldIndex O ID para um item.

id - FieldIndex Mesmo que getId.

in_reply_to - FieldIndex Para discussões, dá o item que este comentário está respondendo.

meta_type - FieldIndex O metatype subjacente do item.

modified - FieldIndex Quando o item foi modificado na ultima vez.

path - PathIndex O caminho par o item.

portal_type - FieldIndex Mesmo que Type.

review_state - FieldIndex O estado de um objeto em in workflow.

start - FieldIndex para eventos somente, quando o evento será iniciado.

Se você sempre inseguro do conteúdo de um index, então você pode ver o conteúdo dos indicadores na ZMI. Clique portal_catalog e selecione Catalog, e isto irá listar todos os objetos catalogados neste tempo. Clique em object, para aparecer uma janela pop up com o conteúdo do índice e o metadata.

Para adicionar, remover, ou alterar o índice, retorne para aba Index. Utilize o Add drop-down box para adicionar um novo índice ou remover um índice. Se você quer executar um re-indexador de um índice particular, então selecione o indexes na esquerda e clique no botão reindex. Se você adicionar um índice para o catálogo, você então necessita de clicar no botão para se assegurar de que haja algum conteúdo em seu índice.

NOTA: Se você possui um site grande, o re-indexamento pode ocupar muito tempo e consumindo processador, assim você pode evitar fazer isto durante horário de pico.


Metadata

Quando o catálogo retorna um resultado, ele não retorna para você um, objeto; no lugar, retorna o metadata armazenado no catálogo. Este metadata é uma série de campos e colunas para cada valor no objeto. Do mesmo modo, um conjunto de lista de colunas para um site Plone é criado.


Exemplos


1 - Neste primeiro exemplo vamos usar 3 indices para efetuar a busca. A nossa busta irá nos retornar os 5 últimos documentos publicados do usuário logado no portal . Vamos acessar o catálogo atravéz de um page_template:

<div tal:define="usuario python:mtool.getMemberInfo(user.getId());
                 author python:usuario['username'];
                 results python:here.portal_catalog.searchResults(portal_type='Document',
                                                                  review_state='published',
                                                                  Creator=author)[:5];">

Nesta busca, estamos usando 3 inidices:

portal_type = Para filtrar pelo tipo de objeto desejado, para buscar mais de um tipo de objeto use ['Document','File','News Item'].

review_state = Para filtrar o estado do documento.

Creator = Para filtrar pelo criador do documento.


2 - Neste segundo exemplo vamos listar todos os objetos da pasta "Documentos" desde que os objetos não sejam pastas, vamos criar a nossa busca em um python script


types = context.portal_types.listContentTypes()
types.remove('Folder')
physical_path = getattr(context,'biblioteca').getPhysicalPath()
caminho = '/'.join(physical_path)
results = context.portal_catalog.searchResults(portal_type=types,path = caminho)

Para criar mais parametros na sua busca basta usar os indices do portal_catalog,



  • Python.org
  • Zope
  • Plone
  • Ubuntu
  • Debian
  • Python Brasil
  • Tchezope
  • Django Brasil