Práticas recomendadas e tutoriais

Couchbase Full Text (CBFT) para gerenciamento de conteúdo

A pesquisa de texto completo (FTS) é um dos principais recursos dos sistemas de gerenciamento de conteúdo para pesquisar conteúdo e metadados associados ao conteúdo. Em um blog anteriorEm minha palestra, já falei sobre uma nova arquitetura totalmente dimensionável para o gerenciamento de conteúdo usando o Apache Chemistry com o repositório Couchbase para metadados (e possivelmente bolhas). Hoje, gostaria de discutir como integrar o recurso de FTS de forma escalonável nessa arquitetura sem a necessidade de mais uma camada (ElasticSearch, Solr, LudicWorks).

Em 2015, o Couchbase anunciou o desenvolvimento do CBFT, que significa Couchbase Full Text search (Pesquisa de texto completo do Couchbase), atualmente em versão prévia para desenvolvedores. O CBFT é um servidor de texto completo distribuído simples e integrado que cobre 80% dos recursos da maioria dos aplicativos. Você pode encontrar mais informações sobre o CBFT aqui: https://connect15.couchbase.com/agenda/sneak-peek-cbft-full-text-search-couchbase/

Neste artigo, começarei a investigar como integrar o CBFT no CMIS Apache Chemistry para pesquisa de texto completo de metadados.

  • Configuração

Para instalar o Couchbase, siga a documentação aqui.

Crie um bucket chamado cmismeta. Esse bucket contém a metatada de cada conteúdo (pasta, arquivo).

Para instalar o Apache Chemistry usando o repositório do Couchbase, siga a documentação aqui.

Para instalar o CBFT, siga a documentação aqui.

  • Criar um índice CBFT

Inicie o CBFT em um nó local: cbft -s https://localhost:8091

Aponte seu navegador da Web para a interface de administração da Web da cbft: https://localhost:8095

Na página de listagem de índices, clique no ícone Novo índice botão.

Criar um índice chamado cmis-fts na caçamba cmismeta.

  • Teste seu índice

Para testar seu índice, você precisa adicionar conteúdo em cmismeta balde. Você pode fazer isso usando o Apache Chemistry workbench para criar conteúdo (pasta, arquivos) que será associado a metadados em cmismeta ou adicionando conteúdo simples para teste (e depois removendo-o).

Neste exemplo, já tenho vários arquivos adicionados ao repositório do Content Management Couchbase.

Abra a guia de consulta e insira uma consulta usando Sintaxe de bleve

  • Projeto CMIS Apache Chemistry

 Primeiro, você precisa ativar os recursos de consulta de texto completo da classe do repositório CMIS Couchbase.

classe pública CouchbaseRepository {

   private RepositoryInfo createRepositoryInfo(CmisVersion cmisVersion) {

        // definir informações de repositório

        RepositoryInfoImpl repositoryInfo = new RepositoryInfoImpl();

        repositoryInfo.setCmisVersionSupported(cmisVersion.value());

        …

        // definir recursos de repositório

       RepositoryCapabilitiesImpl capabilities = new RepositoryCapabilitiesImpl();

        capabilities.setCapabilityQuery(CapabilityQuery.FULLTEXTONLY);

        …

        repositoryInfo.setCapabilities(capabilities);

        return repositoryInfo;

     }

}

Para consultar o índice CBFT, estamos usando a API REST com um cliente Jersey.

Primeiro, adicione a dependência no arquivo pom do maven.

           com.sun.jersey

cliente jersey

          1.8

Em seguida, crie uma nova classe de serviço CBFT. Esse serviço precisa do local do CBFT e do nome do índice. Forneço um método de consulta simples que retorna uma lista de chaves referentes a cmismeta no Couchbase.

pacote org.apache.chemistry.opencmis.couchbase;

importar java.util.ArrayList;
importar java.util.List;

import com.couchbase.client.java.document.json.JsonArray;
import com.couchbase.client.java.document.json.JsonObject;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
importar com.sun.jersey.api.client.WebResource;

classe pública CBFTService {

 private String cbftLocation = null;

private Client client = null;

private String indexid = null;

public CBFTService(String location, String indexid) {
this.cbftLocation = local;
this.indexid = indexid;
cliente = Client.create();
}

/** Pesquisar cbft índice.
* @param query a consulta a ser pesquisada
* @return lista de chaves que correspondem à consulta
* */
public List query(String query){
Resultados da lista = nova ArrayList();

WebResource webResource = cliente
.resource("https://"+this.cbftLocation+":8095/api/index/"+indexid+"/query");

String input = "{" +

     ""q": ""+query+""," +
""indexName": ""+indexid+""," +
""tamanho": 10, "+
""from": 0, "+
""explain": true, "+
""highlight": {}," +
""query": {" +
""boost": 1, "+
""query": ""+query + """+
“},”+
""fields": [" +
“”*”” +
“],” +
""ctl": {" +
""consistência": {"+
""nível": ""," +
""vetores": {}"+
“},”+
""timeout": 0″+
“}”+
“}”;

    Resposta do ClientResponse = webResource.type("application/json")
.post(ClientResponse.class, input);

Se (response.getStatus() != 200) {
lançar uma nova RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}

String output = response.getEntity(String.class);

JsonObject content = JsonObject.fromJson(output);

   JsonArray hits = content.getArray("hits");

se(hits != null){
String id;

     for(int i=0 ; i<hits.size(); i++){
id = hits.getObject(i).getString("id");
results.add(id);

    }
}

resultados de retorno;

}
}

Agora você pode consultar o servidor do Content Management usando o workbench para recuperar conteúdo usando o recurso CBFT e clicar no resultado para ver o conteúdo associado.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Author

Posted by Cecile Le Pape

Depois de 10 anos na Universidade de Paris 6 (França), onde trabalhou na equipe de banco de dados em projetos de replicação, consistência, XML, p2p, sindicação e dispositivos móveis, Cecile decidiu seguir em frente e começar uma nova experiência de vida no setor. Cecile entrou para a equipe de arquitetos de uma pequena empresa chamada Oceane Consulting para desenvolver projetos de gerenciamento de documentos. Agora ela é Arquiteta de Soluções na Couchbase e está muito feliz por estar envolvida tanto na área técnica quanto em vendas.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.