Visualização da pesquisa de texto completo no Couchbase usando o Java SDK

Nesta postagem do blog, daremos uma olhada na API de visualização para pesquisa de texto completo em Couchbase 4.5. Observe que essa API, lançada na versão mais recente do Java SDK  (2.2.4), ainda é @Experimental.

Abordaremos o assunto:

Essa API experimental pode ser usada com o Couchbase Server 4.5 Developer Preview, desde que você use a API 2.2.4 cliente Java SDK, que você pode obter por meio do Maven. Adicione a seguinte dependência ao seu pom.xml:

Pesquisa de texto completo no Couchbase?

Sim! O próximo 4.5 (codinome Watson) incluirá um indexador de texto completo (FTS, também conhecido como CBFT) baseado no software livre Bleve projeto. O Bleve trata de pesquisa de texto completo e indexação em Go (grito para o nosso próprio Marty Schoch por ter iniciado esse projeto).

A ideia é aproveitar o Bleve para fornecer uma pesquisa de texto completo pronta para uso no Couchbase Server, sem a necessidade de usar conectores para software externo (que é executado em seu próprio cluster). Se essa solução pronta para uso não atender totalmente às suas necessidades, é claro que você ainda poderá usar estes conectoresmas, para necessidades mais simples, você pode optar por uma única solução.

O FTS oferece uma série de recursos que são fornecidos pelo Bleve: Analisadores de texto, Tokenizers e filtros de token de pós-processamento que estão além do escopo desta postagem, bem como os vários tipos de consultas que você pode executar nos índices resultantes. Vamos ver quais são esses tipos e como você pode esperar usá-los no contexto do Java SDK.

No restante desta postagem do blog, usaremos três índices que você poderá criar por meio do console administrativo da Web no próximo 4.5 Developer Preview:

Aqui está a lista de índices na interface do usuário:

Nós temos:

  • a índice de cerveja que indexa todo o conteúdo de cada documento no amostra de cerveja balde.
  • a travelIndex que indexa todo o conteúdo de cada documento no amostra de viagem balde.
  • um índice de alias, commonIndexque é uma união dos dois índices acima.

A API Java

O ponto de entrada do recurso de pesquisa de texto completo no Java SDK está no Balde, usando o consulta(SearchQuery ftq) método. Isso é consistente com os métodos de consulta existentes já presentes na API para executar um Consulta ou um N1qlQuery.

A API para pesquisa de texto completo segue o padrão construtor padrão. Identifique o tipo de consulta que você deseja e use o construtor correspondente para construí-la, obtenha o Pesquisa usando construir() e executá-lo usando bucket.query(searchQuery).

Vamos dar um exemplo (muito simples) e ver como ele pode ser consumido:

Se analisarmos cada seção individualmente, veremos o que aconteceu:

  1. Criamos um MatchQuery em um único período.
  2. Ele é executado na amostra de cerveja (.on(beerIndex), procura por ocorrências textuais da palavra "national" (.query("national")) ou termos próximos.
  3. Uma configuração adicional é feita para limitar o número de resultados a 3 (limite(3)) e a consulta real é criada nesse ponto (.build()).
  4. A consulta é executada (bucket.query(ftq)) e retorna um Resultado da pesquisa.
  5. Emitimos o resultado totalHits() e linhas individuais (também acessíveis como uma lista por meio de hits()).

A execução desse código gera resultados:

Vemos que o total de acessos nos dá o número real de acessos antes de o limite ser aplicado. O hits() O método retorna 3 SearchQueryRow objetos, conforme solicitado.

Cada acerto contém a chave do documento associado no Couchbase (id()), bem como mais informações sobre a correspondência, por exemplo, uma pontuação para a correspondência (pontuação())... Se quiser, você pode recuperar o documento associado usando bucket.get(row.id()):

Isso nos dá, para o primeiro acerto:

Se observarmos atentamente o JSON do documento, perceberemos onde o documento provavelmente correspondeu. Na seção "descrição" do documento, há esta frase:

A primeira cervejaria a ser aberta na naçãodesde a Lei Seca.

Observe também que a consulta de texto procurou a palavra solicitada e palavras derivadas que têm a mesma raiz. Na verdade, ela aplicou uma imprecisão de 2 (consulte a próxima seção).

Esse padrão também pode ser aplicado a outros tipos de consultas, portanto, vamos dar uma olhada em mais algumas e ver que tipo de pesquisa pode ser realizada.

Vários tipos de consultas

Consulta Fuzzy

As consultas difusas podem ser realizadas com o MatchQuery, especificando um Distância de Levenshtein como o máximo fuzziness() para permitir o termo:

Em uma imprecisão de 2Isso corresponde a palavras como "hammer" (martelo), "mamma" (mamãe) ou "summer" (verão):

Em uma imprecisão de 1não foi encontrada nenhuma correspondência:

Um tipo de consulta dedicada à imprecisão e que não aplica nenhum analisador também é fornecido no FuzzyQuery.

Vários termos: MatchPhrase

Como vimos, MatchQuery é uma consulta baseada em termos que permite especificar opcionalmente a imprecisão e também aplica o mesmo filtro ao termo pesquisado que pode ter sido aplicado ao campo (por exemplo, stemming, etc.):

Você pode pesquisar vários termos em uma única consulta usando um Combinar frase consulta. Os termos são analisados e a imprecisão pode ser ativada opcionalmente:

Consulta Regexp

A RegexpQuery não faz apenas a correspondência literal, mas permite a correspondência usando uma expressão regular. Veja este exemplo:

Observe que essa consulta visa um campo específico no json (campo("nome")). Queremos todos os nomes que contenham "tale" ou "pale". Aqui estão alguns nomes que correspondem a essa consulta:

Consulta de prefixo

A PrefixQuery procura ocorrências de palavras que começam com a cadeia de caracteres fornecida:

Mais uma vez, olhamos apenas para o interior do nome desta vez para palavras que começam com "weiss":

Consultas de intervalo e data

FTS também é bom com dados não textuais. Por exemplo, o NumericRangeQuery permite que você procure valores numéricos dentro de um intervalo fornecido:

Quais são as saídas:

As datas também são cobertas com o DateRangeQuery:

Quais são as saídas:

Consulta genérica

FTS também oferecem uma forma mais genérica de consulta que combina frases, termos e muito mais usando o Sintaxe de consulta de cadeia de caracteres. Isso pode ser acessado na API por meio do Consulta de cadeia de caracteres.

Combinação

Além disso, você pode combinar critérios simples como MatchQuery usando consultas combinadas. Usando essas duas consultas de termos simples:

Você pode combiná-los de diferentes maneiras:

  • a conjunção procura por todos os termos
  • a disjunção procura pelo menos um termo
  • a consulta booleana permite que você combine as duas abordagens

Obtendo explicações sobre os acertos

Se você quiser obter insights sobre a pontuação e a correspondência de uma determinada SearchQueryRowvocê pode criar sua consulta usando o .explain(true) e obter detalhes do índice no parâmetro explicação() campo:

Conclusão

Esperamos que essa prévia da API tenha despertado seu interesse!

Vá em frente e faça o download do primeiro Visualização do Couchbase 4.5 para desenvolvedores com o serviço de pesquisa de texto completo incorporado. Esperamos que você possa começar a pesquisar rapidamente usando o serviço associado API do Java SDK.

E até lá... Boa codificação!
A equipe do Java SDK

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

Autor

Postado por Simon Basle, engenheiro de software, Pivotal

Simon Basl_ é um engenheiro de software baseado em Paris que trabalha na equipe Spring da Pivotal. Anteriormente, ele trabalhou na equipe do Couchbase Java SDK. Seus interesses abrangem aspectos de design de software (OOP, padrões de design, arquitetura de software), clientes avançados, o que está além do código (integração contínua, (D)VCS, práticas recomendadas) e programação reativa. Ele também é editor da versão francesa do InfoQ.com.

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.