public override bool EstaBatido(
            Indexacao indexacao,
            IList <PalavraReconhecida> palavrasReconhecidas)
        {
            if (string.IsNullOrEmpty(indexacao.ObterValorParaBatimento()))
            {
                return(false);
            }

            if (string.IsNullOrWhiteSpace(indexacao.ObterValorParaBatimento()))
            {
                return(false);
            }

            var palavrasParaAnaliseFullTextGenerica = this.batimentoFullText
                                                      .ExtrairTextoGenerico(palavrasReconhecidas);

            var nomeCompleto = indexacao
                               .ObterValorParaBatimento()
                               .RemoveAcentuacao()
                               .ToLower()
                               .Trim()
                               .Split(' ')
                               .ToList();

            var contadorMatch = 0;

            foreach (var nomeNoCadastro in nomeCompleto)
            {
                var resultado = palavrasParaAnaliseFullTextGenerica.Any(x => x.Texto.RemoveAcentuacao() == nomeNoCadastro);

                if (resultado)
                {
                    contadorMatch++;
                }

                if (contadorMatch >= 2)
                {
                    return(true);
                }
            }

            return(false);
        }
        public override bool EstaBatido(
            Indexacao indexacao,
            IList <PalavraReconhecida> palavrasReconhecidas)
        {
            ////Encontra posicao da ultima palavra de rua na lista de palavras reconhecidas
            var indexacaoLogradouro = indexacao
                                      .Documento
                                      .Indexacao
                                      .FirstOrDefault(x => x.Campo.Id == Campo.CampoLogradouroComprovanteDeResidencia);

            if (indexacaoLogradouro.NaoTemConteudo())
            {
                return(false);
            }

            if (indexacaoLogradouro.ValorFinal.NaoTemConteudo())
            {
                return(false);
            }

            var posicaoNaLista = this.ObterPosicaoDoLogradouroEmPalavraReconhecida(
                indexacaoLogradouro.ValorFinal,
                palavrasReconhecidas);

            if (posicaoNaLista > 0)
            {
                var posicaoFinalNaLista = posicaoNaLista + 20 <= palavrasReconhecidas.Count ?
                                          posicaoNaLista + 20 :
                                          palavrasReconhecidas.Count;

                for (var i = posicaoNaLista; i <= posicaoFinalNaLista; i++)
                {
                    if (this.CompareNumeros(
                            indexacao.ObterValorParaBatimento().Trim(),
                            palavrasReconhecidas[i - 1].Texto))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Exemple #3
0
        public override bool EstaBatido(
            Indexacao indexacao,
            IList <PalavraReconhecida> palavrasReconhecidas)
        {
            var listaLimpa = this.ObterListaLimpaDePalavras(palavrasReconhecidas);

            var valorCadastro = indexacao.ObterValorParaBatimento();

            if (string.IsNullOrEmpty(valorCadastro))
            {
                return(false);
            }

            valorCadastro = valorCadastro
                            .RemoveAcentuacao()
                            .ToLower()
                            .Trim();

            var listaNomes = valorCadastro
                             .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            var nomesNoCadastro = listaNomes;

            var encontrou = false;
            var ultimaPosicaoEncontrada = 0;
            var contadorMatch           = 0;
            var posInicial = 0;

            var batido = false;

            foreach (var nomeNoCadastro in nomesNoCadastro)
            {
                for (var i = posInicial; i < listaLimpa.Count; i++)
                {
                    var palavraReconhecida = listaLimpa[i].Texto.Trim().ToLower();

                    ////primeiro Nome
                    if (!encontrou)
                    {
                        if (palavraReconhecida.Equals(nomeNoCadastro))
                        {
                            encontrou = true;
                            ultimaPosicaoEncontrada = i;
                            contadorMatch++;
                            posInicial = i + 1;
                            break;
                        }
                    }
                    else
                    {
                        //// segundo nome em diante
                        if (palavraReconhecida.Equals(nomeNoCadastro))
                        {
                            if (i - 1 != ultimaPosicaoEncontrada)
                            {
                                encontrou = false;
                                break;
                            }

                            ultimaPosicaoEncontrada = i;
                            contadorMatch++;
                            posInicial = i + 1;
                            break;
                        }
                        else
                        {
                            encontrou = false;
                            break;
                        }
                    }
                }
            }

            batido = contadorMatch == nomesNoCadastro.Length;

            if (batido == false)
            {
                if (this.proximaTentativa.NaoTemConteudo() == false)
                {
                    batido = this.proximaTentativa
                             .EstaBatido(indexacao, palavrasReconhecidas);
                }
            }

            return(batido);
        }
Exemple #4
0
        public override bool EstaBatido(Indexacao indexacao, IList <PalavraReconhecida> palavrasReconhecidas)
        {
            var palavrasParaAnaliseFullTextGenerica = this.batimentoFullText
                                                      .ExtrairTextoGenerico(palavrasReconhecidas);

            if (indexacao.ObterValorParaBatimento().NaoTemConteudo())
            {
                return(false);
            }

            var nomeCompleto = indexacao
                               .ObterValorParaBatimento()
                               .RemoveAcentuacao()
                               .ToLower()
                               .Trim();

            var listaNomes = nomeCompleto.Split(' ').ToList();

            var encontrou = false;
            var ultimaPosicaoEncontrada = 0;
            var contadorMatch           = 0;
            var posInicial = 0;

            foreach (var nomeNoCadastro in listaNomes)
            {
                for (int i = posInicial; i < palavrasParaAnaliseFullTextGenerica.Count; i++)
                {
                    var palavraReconhecida = palavrasParaAnaliseFullTextGenerica[i].Texto.Trim().ToLower();

                    ////primeiro Nome
                    if (!encontrou)
                    {
                        if (palavraReconhecida.Equals(nomeNoCadastro))
                        {
                            encontrou = true;
                            ultimaPosicaoEncontrada = i;
                            contadorMatch++;
                            posInicial = i + 1;
                            break;
                        }
                    }
                    else
                    {
                        if (palavraReconhecida.Equals(nomeNoCadastro))
                        {
                            if (i - 1 != ultimaPosicaoEncontrada)
                            {
                                return(false);
                            }

                            ultimaPosicaoEncontrada = i;
                            contadorMatch++;
                            posInicial = i + 1;
                            break;
                        }

                        return(false);
                    }
                }

                if (!encontrou)
                {
                    return(false);
                }
            }

            return(true);
        }
        public override bool EstaBatido(Indexacao indexacao, IList <PalavraReconhecida> palavrasReconhecidas)
        {
            var palavrasParaAnaliseFullTextGenerica = this.batimentoFullText
                                                      .ExtrairTextoGenerico(palavrasReconhecidas);

            if (indexacao.ObterValorParaBatimento().NaoTemConteudo())
            {
                return(false);
            }

            var nomeCompleto = indexacao
                               .ObterValorParaBatimento()
                               .RemoveAcentuacao()
                               .ToLower()
                               .Trim();

            var listaNomes = nomeCompleto.Split(
                new[] { ' ' },
                StringSplitOptions.RemoveEmptyEntries);

            var nomesNoCadastro = new List <string>();

            nomesNoCadastro.Add(listaNomes.First());
            nomesNoCadastro.Add(listaNomes.Last());

            var encontrou     = false;
            var contadorMatch = 0;
            var posInicial    = 0;
            var batido        = false;

            foreach (var nomeNoCadastro in nomesNoCadastro)
            {
                for (var i = posInicial; i < palavrasParaAnaliseFullTextGenerica.Count; i++)
                {
                    var palavraReconhecida = palavrasParaAnaliseFullTextGenerica[i]
                                             .Texto
                                             .Trim()
                                             .ToLower();

                    ////primeiro Nome
                    if (!encontrou)
                    {
                        if (palavraReconhecida.Equals(nomeNoCadastro))
                        {
                            encontrou = true;
                            contadorMatch++;
                            posInicial = i + 1;
                            break;
                        }
                    }
                    else
                    {
                        //// segundo nome em diante
                        if (palavraReconhecida.Equals(nomeNoCadastro))
                        {
                            contadorMatch++;
                            posInicial = i + 1;
                            break;
                        }
                    }
                }
            }

            batido = contadorMatch == nomesNoCadastro.Count;

            if (batido == false)
            {
                if (this.proximaTentativa.NaoTemConteudo() == false)
                {
                    batido = this.proximaTentativa
                             .EstaBatido(indexacao, palavrasReconhecidas);
                }
            }

            return(batido);
        }