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


November 25, 2007 ás 17:08 [resp.]
Já experimentaste usar o PhpDig (http://www.phpdig.net/)?
Vê lá se te podes usar as funcionalidades do mesmo.
November 25, 2007 ás 17:12 [resp.]
Numa palavra: lucene (http://en.wikipedia.org/wiki/Lucene)
November 25, 2007 ás 17:22 [resp.]
Noutra palavra: faz o outsourcing das pesquisas para o google
November 25, 2007 ás 18:17 [resp.]
Tal como diz o filipe, lucene - http://framework.zend.com/manual/en/zend.search.lucene.html
November 25, 2007 ás 18:24 [resp.]
LOL Filipe, eu vinha precisamente dizer isso exactamente nas tuas palavras, sem tirar nem pôr! “I have one word for you: Lucene”
November 25, 2007 ás 18:40 [resp.]
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…
November 25, 2007 ás 21:10 [resp.]
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.
November 25, 2007 ás 21:26 [resp.]
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.
November 25, 2007 ás 21:36 [resp.]
@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…
November 25, 2007 ás 21:54 [resp.]
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.
January 7, 2008 ás 6:36 [resp.]
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.