[plonegov-br] Problemas com a busca multifacetada

Clayton claytonc.sousa em gmail.com
Quinta Abril 28 14:24:41 BRT 2016


Leandro,

Eu só uso essa solução desde o Plone 2 nunca tive problemas.

Mas se você encontrar uma outra solução compartilhe com nós, e não se
esqueça de testar com outros complementos do Plone.


abraços,

Clayton



Em 28 de abril de 2016 13:28, Leandro Koiti Sato <shogunbr em gmail.com>
escreveu:

> Olá, Clayton.
>
> Eu já havia testado sitecustomize.py  para contornar o problema, mas pelo
> que eu li na documentação do Plone [1], isso não é recomendável.
>
> Minha descrição do e-mail anterior está errada. Fiz outros testes e tanto
> o Plone normal quanto o portal padrão dão o erro ao fazer uma query com
> Unicode.
> O problema é que no Plone normal, a consulta do faceted é feita assim
> (para a busca por "Campo Mourão"):
>
> 'query': 'Campo Mour\xc3\xa3o'
>
> No portal padrão, o faceted passa a fazer a consulta assim:
>
> 'query': u'Campo Mour\xe3o'
>
> Alguma coisa no portal padrão muda esse comportamento da busca faceted,
> gerando o erro.
>
>
> [1] http://docs.plone.org/manage/troubleshooting/unicode.html
>
>
> --
> Leandro Koiti Sato
>
>
> 2016-04-28 10:40 GMT-03:00 Clayton <claytonc.sousa em gmail.com>:
>
>> Leandro,
>>
>> Esse problema "UnicodeDecodeError: 'ascii' codec ...", é um velho
>> problema nas instalações do Plone.
>>
>> A solução é a seguinte crie um arquivo chamado "sitecustomize.py" no
>> caminho seu_python_virtual_do_buildout/lib/python2.7/sitecustomize.py com o
>> seguinte conteúdo:
>>
>> import sys
>> sys.setdefaultencoding('utf-8')
>>
>> Depois de criado reinicie as instâncias.
>>
>> Você pode deixar configurado no seu buildout para futuras instalações
>> como eu já faço a bastante tempo.
>>
>> parts =
>>     ...
>>     commands
>>
>> [commands]
>> # https://pypi.python.org/pypi/plone.recipe.command
>> recipe = plone.recipe.command
>> command =
>>     export ENV_PATH=${buildout:directory}/../Python-2.7
>>     echo "import sys; sys.setdefaultencoding('utf-8')" >
>>  $ENV_PATH/lib/python2.7/sitecustomize.py
>> update-command = ${:command}
>>
>> abraços,
>>
>> Clayton
>>
>>
>>
>> Em 28 de abril de 2016 10:04, Leandro Koiti Sato <shogunbr em gmail.com>
>> escreveu:
>>
>>> Informação adicional: o problema ocorre quando algum conteúdo do portal
>>> esteja tagueado com acentos, no caso, o portal padrão já vem povoado alguns
>>> itens com a tag "Previdência Social".
>>> Se excluirmos todos os itens com tags com acentos, não gera erro.
>>> Entretanto, não é problema só com a tag pré-povoada, já que se criarmos
>>> outras tags com acentos, volta a dar o erro.
>>>
>>> Esse problema não ocorre em uma instalação do Plone com o EEA Faceted,
>>> sem a instalação do portal padrão.
>>> No Plone normal, é possível fazer buscas, tipo:  {'Subject':
>>> {'operator': 'or', 'query': u'Tag 1'}}, mesmo existindo tags com acento no
>>> catalog.
>>>
>>> Já se fizermos a mesma busca no portal padrão e existir alguma tag com
>>> acentos, ele vai dar o UnicodeDecodeError.
>>>
>>> Acredito que  alguma modificação do portal padrão esteja misturando
>>> unicode e strings no índice "Subject" do Catalog.
>>>
>>> Alguém consegue verificar isso?
>>>
>>>
>>> --
>>> Leandro Koiti Sato
>>> shogunbr em gmail.com
>>>
>>>
>>> 2016-04-26 13:27 GMT-03:00 Leandro Koiti Sato <shogunbr em gmail.com>:
>>>
>>>> Boa tarde, pessoal.
>>>>
>>>> Estou com problemas na busca multifacetada.
>>>> Criei uma busca com o widget de checkboxes para buscar no índice de
>>>> Tags, operador OR.
>>>> Como exemplo, vou usar o vocabulário brasil.gov.tipos, mas o erro dá em
>>>> vocabulários criados com o ATVocabularyManager, ou nos outros vocabulários
>>>> pré-existentes.
>>>> Coloquei um widget de debug, para ver a busca que ele faz.
>>>>
>>>> Ao selecionar apenas um dos itens dos checkboxes, por exemplo,
>>>> 'Arquivo' (File).
>>>> Ele vai gerar uma consulta:
>>>>
>>>> {'Language': ['pt-br', ''],
>>>>  'Subject': {'operator': 'or', 'query': u'File'},
>>>>  'facet.field': [u'Subject'],
>>>>  'sort_on': u'effective',
>>>>  'sort_order': 'descending'}
>>>>
>>>> Isso faz com que a busca não retorne nada como resultado e gera um erro
>>>> no log:
>>>>
>>>> 2016-04-26 17:45:06 ERROR eea.facetednavigation.browser.app.query
>>>> 'ascii' codec can't decode byte 0xc3 in position 6: ordinal not in
>>>> range(128)
>>>> Traceback (most recent call last):
>>>>   File
>>>> "/home/plonegovbr/portal.buildout/eggs/eea.facetednavigation-8.9-py2.7.egg/eea/facetednavigation/browser/app/query.py",
>>>> line 144, in query
>>>>     brains = catalog(self.context, **query)
>>>>   File
>>>> "/home/plonegovbr/portal.buildout/eggs/eea.facetednavigation-8.9-py2.7.egg/eea/facetednavigation/search/catalog.py",
>>>> line 110, in __call__
>>>>     return search(**newquery)
>>>>   File
>>>> "/home/plonegovbr/portal.buildout/eggs/Products.CMFPlone-4.3.7-py2.7.egg/Products/CMFPlone/CatalogTool.py",
>>>> line 393, in searchResults
>>>>     return ZCatalog.searchResults(self, REQUEST, **kw)
>>>>   File
>>>> "/home/plonegovbr/portal.buildout/eggs/Products.ZCatalog-2.13.27-py2.7.egg/Products/ZCatalog/ZCatalog.py",
>>>> line 604, in searchResults
>>>>     return self._catalog.searchResults(REQUEST, used, **kw)
>>>>   File
>>>> "/home/plonegovbr/portal.buildout/eggs/Products.ZCatalog-2.13.27-py2.7.egg/Products/ZCatalog/Catalog.py",
>>>> line 925, in searchResults
>>>>     return self.search(args, sort_index, reverse, sort_limit, _merge)
>>>>   File
>>>> "/home/plonegovbr/portal.buildout/eggs/Products.ZCatalog-2.13.27-py2.7.egg/Products/ZCatalog/Catalog.py",
>>>> line 545, in search
>>>>     r = _apply_index(query, rs)
>>>>   File
>>>> "/home/plonegovbr/portal.buildout/eggs/Products.ZCatalog-2.13.27-py2.7.egg/Products/PluginIndexes/common/UnIndex.py",
>>>> line 403, in _apply_index
>>>>     s = index.get(k, None)
>>>> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 6:
>>>> ordinal not in range(128)
>>>>
>>>>
>>>>
>>>> Ao selecionar dois ou mais itens no checkbox, ele gera uma busca:
>>>>
>>>> {'Language': ['pt-br', ''],
>>>>  'Subject': {'operator': 'or', 'query': ['File', 'Audio']},
>>>>  'facet.field': [u'Subject'],
>>>>  'sort_on': u'effective',
>>>>  'sort_order': 'descending'}
>>>>
>>>> Neste caso, não dá nenhum erro e a busca retorna normalmente as páginas
>>>> com as respectivas tags.
>>>> Alguém tem alguma ideia de como resolver isso?
>>>>
>>>> Quais versões do portal padrão, busca multifacetada e eea faceted
>>>> navigation estão rodando no site da SECOM e Planalto que tem a busca
>>>> funcionando?
>>>>
>>>> Meu ambiente:
>>>> Portal Padrão 1.1.4
>>>> Plone 4.3.7 (4311)
>>>> CMF 2.2.9
>>>> Zope 2.13.23
>>>> Python 2.7.3 (default, Mar 13 2014, 11:03:55) [GCC 4.7.2]
>>>> PIL 2.7.0 (Pillow)
>>>>  .gov.br: Busca Multifacetada 1.0a1
>>>> EEA Faceted Navigation 8.9 (na 8.8 deu o mesmo problema)
>>>>
>>>> --
>>>> Leandro Koiti Sato
>>>> shogunbr em gmail.com
>>>>
>>>>
>>>
>>> --
>>> Comunidade Plone no Governo
>>> Site: http://www.softwarelivre.gov.br/plone
>>> Wiki: http://colab.interlegis.leg.br/wiki/PloneGovBr
>>> Histórico:
>>> http://colab.interlegis.leg.br/search/?type=thread&order=latest&list=plonegov-br
>>> Lista: https://listas.interlegis.gov.br/mailman/listinfo/plonegov-br
>>>
>>
>>
>> --
>> Comunidade Plone no Governo
>> Site: http://www.softwarelivre.gov.br/plone
>> Wiki: http://colab.interlegis.leg.br/wiki/PloneGovBr
>> Histórico:
>> http://colab.interlegis.leg.br/search/?type=thread&order=latest&list=plonegov-br
>> Lista: https://listas.interlegis.gov.br/mailman/listinfo/plonegov-br
>>
>
>
> --
> Comunidade Plone no Governo
> Site: http://www.softwarelivre.gov.br/plone
> Wiki: http://colab.interlegis.leg.br/wiki/PloneGovBr
> Histórico:
> http://colab.interlegis.leg.br/search/?type=thread&order=latest&list=plonegov-br
> Lista: https://listas.interlegis.gov.br/mailman/listinfo/plonegov-br
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.interlegis.gov.br/pipermail/plonegov-br/attachments/20160428/987dca9b/attachment.html>


Mais detalhes sobre a lista de discussão PloneGov-BR