[plonegov-br] Problemas com a busca multifacetada

Clayton claytonc.sousa em gmail.com
Quinta Abril 28 10:40:59 BRT 2016


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
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.interlegis.gov.br/pipermail/plonegov-br/attachments/20160428/07d5c0d0/attachment.html>


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