Introduza o termo a pesquisar e clique Enter.

PHP e pesquisa

Nov 07 25

Escrito por Luis Nabais @ 25/11/07 16:11 | 11 Comentários »

Ok será que alguém me sabe ajudar a criar um motor de pesquisa para um website php?

Eu até consigo fazer alguma coisa mas de duas formas apenas:
1 – Com um index gigante impossível de criar pois atinge o limite do tempo de execução.
2 – Com a pesquisa FULLTEXT do MySQL que me está a dar voltas á cabeça porque não é assim muito versátil (palavras superiores a 3 caracteres, um index para titulo e conteúdo inseparável, etc…)

pub:

11 Comentários

  1. Dextro

    Realmente a Zend Framework faz o que preciso e quase que só lhe falta fazer torradas mas (e há sempre um mas) como raio uso eu isto? É que eu não tenho propriamente acesso á pasta de includes do meu host…

  2. Jose silva

    Concordo com o Filipe, Lucene!

    Mas o Lucene por vezes, para tarefas pequenas de pesquisa e fazer mais que o necessario, aconselho-te a ler sobre isso e depois ve se precisas mesmo de algo tao poderoso como o Lucene.

  3. Carlos Andrade

    Não ligues ao Lucene para já, desculpem-me mas é a resposta típica em 90% dos casos quando a pergunta contem o termo “pesquisa”. Repara que de todos que disseram “Lucene” nenhum te referiu que estás a assumir limitações que não existem no ponto 2.

    Para o que deverás querer é o mesmo que caçar pulgas com uma caçadeira. Quando te queixares da performance do Mysql, sim, mas até lá, o teu problema não parece ser esse.

    No caso 1) deves estar a usar algo web-based para criar o index e o browser/php dá timeout não ? Isso não é do Mysql (se estou a assumir bem). É que criar indexes não tem “limite de tempo de execução”. Cria o index na shell do Mysql.

    No caso 2) as limitações que referes são configuráveis. O limite do tamanho das palavras em FULLTEXT SEARCH por exemplo é uma configuração do Mysql… defines o tamanho e fazes um repair table quick e voilá. Procura na documentação.

  4. Dextro

    @Carlos:

    No caso 1 o que tenho é mesmo limite no tempo de execução do PHP que estava a criar uma base de dados com as palavras relacionadas com os posts em que foram encontradas.

    No caso 2 volto a dizer que eu não tenho acesso ás configurações do servidor!

    Portanto sim, o Lucene pareçe-me uma boa solução se eu por acaso alguma vez perceber como o devo utilizar num ambiente onde, mais uma vez repito, não tenho acesso ás configurações do servidor…

  5. Nuno Mariz

    Não percebi muito bem o teu problema com o MySQL no 2º ponto.
    Se não tens acesso às configurações do servidor, esquece o lucene(e já agora existe uma coisa mais evoluida, baseada no lucene – http://lucene.apache.org/solr/).
    Se não tens mesmo acesso às configurações do servidor, estás mesmo limitado ao fulltext-search do MySQL. O que se calhar nem é limitação, concordo com o Carlos.

  6. André Medeiros

    Nuno,

    A utilização do Lucene (implementação feita pela Zend) não depende de mexer em configurações de servidor. Implementei-o num projecto pessoal (http://www.belacena.com/) e, aparte de 2 coisas, não tenho razões de queixa:

    1) Não dá para actualizar documentos; primeiro tens que remover o dito cujo e depois inserir a versão actualizada
    2) UTF-8 é para esquecer (embora se dê a volta com facilidade também);

    Fora isso, a abrir index, pesquisar e por aí fora é capaz de ser mais rápido que um query FULLTEXT ao MySQL. Só sei que nunca mais olhei pra trás.