Saltar o Menu >>
Nov 07
25

PHP e pesquisa...

Por Dextro | 16:11 | | 11 Comentarios »

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…)

11 Comentários

  1. Já experimentaste usar o PhpDig (http://www.phpdig.net/)?
    Vê lá se te podes usar as funcionalidades do mesmo.

  2. Numa palavra: lucene (http://en.wikipedia.org/wiki/Lucene)

  3. Noutra palavra: faz o outsourcing das pesquisas para o google :)

  4. LOL Filipe, eu vinha precisamente dizer isso exactamente nas tuas palavras, sem tirar nem pôr! “I have one word for you: Lucene”

    :-)

  5. 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…

  6. 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.

  7. 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.

  8. @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…

  9. 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.

  10. 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.

Ajuda:

NOTA: Os comentários são moderados.

Clique num dos campos do formulário para ver o texto de ajuda respectivo.

Requer javascript.

Mostrar/Esconder Ajuda
 

Comente!