cancel
Showing results for 
Search instead for 
Did you mean: 

CMIS Query Full Text com caracteres especiais

fagnersouza
Champ in-the-making
Champ in-the-making
Estou fazendo a seguinte query cmis:


SELECT * FROM xuxu:xuxu_conteudo
WHERE  CONTAINS('50%')


Quando executo essa query, me retorna todos documentos que têm o número 50. Independente se tem o "%".

Como eu posso fazer para que a consulta retorne essa string exata "50%"?

Obrigado

Fagner
8 REPLIES 8

rafaelscg
Champ on-the-rise
Champ on-the-rise
Fagner,

O que está acontecendo é que quando você usa o "%" dessa forma, ele entende que o que você quer é pesquisa tudo o que começa com 50. Por exemplo, se você quer pesquisar qualquer documento que tenha o número "50" poderia usar "%50%". Tente usar a "\" antes do sinal de %, pois assim ele entenderá que você quer pesquisar a string exata. Sua pesquisa ficaria mais ou menos assim:


SELECT * FROM xuxu:xuxu_conteudo
WHERE CONTAINS('50\\%')


Se você quiser pesquisar tudo o que começa com "50%", seria feito dessa forma:


SELECT * FROM xuxu:xuxu_conteudo
WHERE CONTAINS('50\\%%')


Abaixo segue um link para auxilia-lo:

http://wiki.alfresco.com/wiki/CMIS_Query_Language

Teste e nos diga se funcionou.

Rafael obrigado pela resposta.

Mas mesmo assim não funcionou, usando tanto o '50\\%' ou '50\\%%', nos dois me retorna documentos com o número 50, independentemente se tem o '%'.
Tinha testado já alguns scapes que conhecia sem sucesso.

Caso tenha outras sugestões fico agradecido.

Obrigado.

rafaelscg
Champ on-the-rise
Champ on-the-rise
Fagner,

Não sei se você tentou com "\\". Quando se utiliza o CONTAINS, há a necessidade de se utilizar o "double escape". Eu editei o comentário que tinha postado pois eu não havia colocado pois não me atentei que está utilizando o CONTAINS. No link abaixo há uma parte que fala sobre essa necessidade de se utilizar o double escape:

http://wiki.alfresco.com/wiki/CMIS_Query_Language#String_Literals

Testei utilizando CONTAINS('50\\%') mesmo assim continua listando, também, documentos que possuem só o número 50.
Qualquer outro coringa como "*", também ele não interpreta como texto. Não consigo fazer escape que ele reconheça que seja texto e não um coringa.

Obrigado pela ajuda

Fagner Souza



rafaelscg
Champ on-the-rise
Champ on-the-rise
Fagner,

Realmente não estou sabendo qual o problema com o CONTAINS a principio. Porem você pode tentar com o LIKE. Pelo que entendi, você está querendo pesquisar todos os documentos que tenham "50%". Com o LIKE utilizando apenas "%50\%%" ele entende que você quer pesquisar por "50%".

Caso eu encontre a solução, posto aqui logo em seguida.

fagnersouza
Champ in-the-making
Champ in-the-making
Rafael,

Me corrija se estou errado, mas o LIKE não serve para comparar nos metadados?
Tipo:

SELECT cmis:name FROM cmis:document WHERE cmis:name LIKE '%50\%%'


Que vai pesquisar só no metadado names.

Mas no caso quero fazer uma consulta fulltext, no conteúdo do documento. Poderia fazer com LIKE? Como?


Obrigado.

Fagner

rafaelscg
Champ on-the-rise
Champ on-the-rise
Fagner,

Agora eu entendi que o que você quer fazer é uma pesquisa FULL TEXT, me desculpe. Realmente eu só fiz isso com o uso de CONTAINS. Vou fazer alguns testes aqui e assim que tiver uma solução testada para isso posto aqui.

Segundo essa resposta no fórum principal, não é suportado.
http://forums.alfresco.com/comment/133017


Att.

Fagner
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.