Repository: interlegis/sapl

Issue:
Matérias Legislativas e normas jurídicas - pesquisa textual não funciona
Não funciona para qualquer dos tipo de documento selecionado. A resposta é sempre "Nenhum texto encontrado!". Para documentos acessórios (arquivos em pdf, pdf/a e odt) pesquisei por "parecer". Para matérias legislativas (arquivos em pdf, pdf/a e xml) pesquisei "lei" e "indicação". Para normas (arquivos em pdf, pdf/a e html) pesquisei por "lei".


Discussion:
Bom dia @andreagudo. Tem certeza que existem arquivos com essas palavras pesquisadas? Estou testando aqui a pesquisa para Materias Legislativas e Normas Juridicas, no formato pdf e odt, e parece estar funcionando. 
Bem, há a seguinte matéria:
https://sapl3.agudo.rs.leg.br/media/sapl/public/materialegislativa/2017/7319/7319_texto_integral.xml
Fiz a pequisa abaixo:
![captura de tela de 2018-04-11 10-13-56](https://user-images.githubusercontent.com/19169882/38618851-208e8416-3d71-11e8-926f-204800591de1.png)

Há a matéria
https://sapl3.agudo.rs.leg.br/materia/8449

Pesquei por expressão que está na ementa, também não funcionou.

![captura de tela de 2018-04-11 10-17-31](https://user-images.githubusercontent.com/19169882/38619013-943ea9d6-3d71-11e8-8263-6750a2e02bcc.png)

Darei uma olhada no que pode estar acontecendo. Obrigada!

Resolving patch:
diff --git a/sapl/base/search_indexes.py b/sapl/base/search_indexes.py
--- a/sapl/base/search_indexes.py
+++ b/sapl/base/search_indexes.py
@@ -21,6 +21,7 @@
 from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa
 from sapl.norma.models import NormaJuridica
 from sapl.settings import BASE_DIR, SOLR_URL
+from sapl.utils import RemoveTag
 
 logger = logging.getLogger(BASE_DIR.name)
 
@@ -51,10 +52,17 @@ def solr_extraction(self, arquivo):
         return extracted_data
 
     def whoosh_extraction(self, arquivo):
-        return textract.process(
-            arquivo.path,
-            language='pt-br').decode('utf-8').replace('\n', ' ').replace(
-            '\t', ' ')
+
+        if arquivo.path.endswith('html') or arquivo.path.endswith('xml'):
+            with open(arquivo.path, 'r', encoding="utf8", errors='ignore') as f:
+                content = ' '.join(f.read())
+                return RemoveTag(content)
+
+        else:
+            return textract.process(
+                arquivo.path,
+                language='pt-br').decode('utf-8').replace('\n', ' ').replace(
+                '\t', ' ')
 
     def print_error(self, arquivo):
         msg = 'Erro inesperado processando arquivo: %s' % (
@@ -82,7 +90,8 @@ def file_extractor(self, arquivo):
             except ExtensionNotSupported as e:
                 print(str(e))
                 logger.error(str(e))
-            except Exception:
+            except Exception as e2:
+                print(str(e2))
                 self.print_error(arquivo)
         return ''
 
diff --git a/sapl/utils.py b/sapl/utils.py
--- a/sapl/utils.py
+++ b/sapl/utils.py
@@ -707,12 +707,28 @@ def TrocaTag(texto, startTag, endTag, sizeStart, sizeEnd, styleName):
                 if (texto[i:i + sizeEnd] == endTag):
                     textoSaida += 'blockTable><para>'
                     insideTag = 0
-                    i = i + sizeEnd
+                    i += sizeEnd
                 else:
                     textoSaida += texto[i]
-                    i = i + 1
+                    i += 1
             else:
                 textoSaida += texto[i]
-                i = i + 1
+                i += 1
+
+    return textoSaida
+
+
+def RemoveTag(texto):
+    textoSaida = ''
+    i = 0
+
+    while (i < len(texto)):
+
+        if (texto[i] == '<'):
+            i = ExtraiTag(texto, i)
+
+        else:
+            textoSaida += texto[i]
+            i += 1
 
     return textoSaida


Test patch: