Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1206 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Moteur de recherche GNU pour Linux/PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Moteur de recherche GNU pour Linux/PHP

n°906314
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 09:49:42  profilanswer
 

Salut.
 
On me demande ce qu'il existe comme moteurs de recherche utilisable avec PHP sur plateforme Linux (sur plateforme Windows, je préconise définitivement Index Server qui est présent pas défaut)
 
- Ce moteur de recherche doit indexer des documents sur le disque dur, que ce soit HTML, XML, DOC, XLS ou PDF (principalement).
- Lors d'une recherche, on doit pouvoir réduire le scope de recherche sur un répertoire donné, ou plusieurs répertoires à la fois (pas forcément inclus les uns dans les autres)
- Si possible, un lien avec une BDD MySQL ou PostGre serait le bien venu (pour récupérer un lien entre les fichiers et des éléments de la base par exemple, et filtrer les fichiers par ces éléments BDD), mais ce n'est pas du tout obligatoire.
 
J'ai rapidement commencé à cherché, et j'ai pas trouvé de moteur de recherche qui me convenait. Il faut notamment qu'il puisse indexer les meta des documents (sujet, auteur, etc.) et faire des recherches sur des "mots de la même famille", homonyme et pourquoi pas synonimes.
 
Merci pour votre éclairage.
 
Ha, et si la syntaxe d'interrogation pouvait être simple, ce serait pas mal (TextSearch de Microsoft reprends par exemple une syntaxe SQL)


Message édité par Arjuna le 24-11-2004 à 09:50:44
mood
Publicité
Posté le 24-11-2004 à 09:49:42  profilanswer
 

n°906322
alien_nan
Posté le 24-11-2004 à 10:00:36  profilanswer
 

Arjuna a écrit :

Salut.
 
On me demande ce qu'il existe comme moteurs de recherche utilisable avec PHP sur plateforme Linux (sur plateforme Windows, je préconise définitivement Index Server qui est présent pas défaut)
 
- Ce moteur de recherche doit indexer des documents sur le disque dur, que ce soit HTML, XML, DOC, XLS ou PDF (principalement).
- Lors d'une recherche, on doit pouvoir réduire le scope de recherche sur un répertoire donné, ou plusieurs répertoires à la fois (pas forcément inclus les uns dans les autres)
- Si possible, un lien avec une BDD MySQL ou PostGre serait le bien venu (pour récupérer un lien entre les fichiers et des éléments de la base par exemple, et filtrer les fichiers par ces éléments BDD), mais ce n'est pas du tout obligatoire.
 
J'ai rapidement commencé à cherché, et j'ai pas trouvé de moteur de recherche qui me convenait. Il faut notamment qu'il puisse indexer les meta des documents (sujet, auteur, etc.) et faire des recherches sur des "mots de la même famille", homonyme et pourquoi pas synonimes.
 
Merci pour votre éclairage.
 
Ha, et si la syntaxe d'interrogation pouvait être simple, ce serait pas mal (TextSearch de Microsoft reprends par exemple une syntaxe SQL)


 
Je vais tester swish-e d'ici peu. C'est un moteur de recherche full-text qui parait-il tourne bien. Nous allons l'integrer dans un environnement PHP également
 
:hello:

n°906356
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 10:30:06  profilanswer
 

Ha be, si tu peux tout simplement me tenir au courant de tes tests :D
 
Parceque je dois moi-même bencher ensuite la ou les solutions trouvées afin de choisir celle à mettre en place.:whistle:

n°906394
paulmuadib
Posté le 24-11-2004 à 11:27:58  profilanswer
 

http://www.phpdig.net/navigation.php?action=doc#toc3
 
c'est celui que j'ai mis en place sur l'Intranet où je bosse sur un plateforme FreeBSD/apache/php4/MySQL
 
les résultats sont plus que satisfaisants

n°906396
simogeo
j'ai jamais tué de chats, ...
Posté le 24-11-2004 à 11:32:57  profilanswer
 

arjuna > t'as essayé http://www.htdig.org/ ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°906450
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 12:19:42  profilanswer
 

Merci pour ces infos :)
 
Je vais voir ces trois produits et ce que ça donne ! :jap:

n°906708
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 15:34:54  profilanswer
 

Pour Swish-e, d'après la dac, il est capable de rechercher des mots de la même famille et des homonymes.
Par contre, rien n'est spécifié pour les fichiers XLS et DOC. :/
 
phpdig, lui, estcapable de lire ces fichiers. Par contre, rien n'est indiqué quant à sa capacité à chercher des mots avec une orthographe variante... Paulmuadib, tu peux me dire si ça marche ? Par exemple, rechercher "boulangerie" et il ressort "boulangère".
 
Quand à htdig, idem que phpdig. Simogeo, tu sais si je peux faire des recherches comme je veux ?
 
Grossomodo, je veux un truc qui est capable de faire comme google (et je ne veux pas d'un moteur qui bouffe directement une string, je veux pouvoir écrire à la main les critères que je veux).
 
C'est à dire que :
- Rechercher l'orthographe exacte
- Rechercher avec une orthographe avoisinante
- Rechercher dans un scope particulier de documents
- AND, OR et NOT évidement
- Mettons que j'ai un client qui appartient à un groupe particulier, je veux pouvoir le faire taper dans un catalogue spécifique, ou alors inclure un certain nombre de critères supplémentaires
 
Grossomodo, pour ceux qui connaissent Index Server ou Oracle Text Search, je recherche un moteur équivalent, et à la même logique d'implémentation.

n°906710
Sebastien
Posté le 24-11-2004 à 15:38:32  profilanswer
 

mnogosearch, the best :-)

n°906713
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 15:41:08  profilanswer
 

En fait, et c'est un point très important pour moi, je ne veux pas que le langage de requêtage soit fixé.
 
Je veux un truc analogique à ce que j'ai fait sur mon site perso avec SQL Server Full Text Search :
 

Code :
  1. filtre = getFiltreFromKeyWord(replace(trim(request.Form("KEYWORD" )), "'", "''" ), "CONTAINS" )
  2.   sql = "SELECT ID, TITRE_ORI, TITRE_FR, U_LOGIN, TYPE, RANK FROM ( " &_
  3.     " SELECT ID as ID, TITRE_ORI as TITRE_ORI, TITRE_FR as TITRE_FR, U_LOGIN as U_LOGIN, TYPE AS TYPE, KEY_TBL.RANK " &_
  4.     " FROM ENTITE INNER JOIN CONTAINSTABLE (ENTITE, *, ' " & filtre & " ' , " & top_n_by_rank * 3 & " ) AS KEY_TBL " &_
  5.     "   ON ENTITE.ID = KEY_TBL.[KEY] " &_
  6.     " UNION " &_
  7.     " SELECT ID as ID, VILLE AS TITRE_ORI, NOM AS TITRE_FR, U_LOGIN as U_LOGIN, 4 AS TYPE, KEY_TBL.RANK " &_
  8.     " FROM BOUTIQUE INNER JOIN CONTAINSTABLE (BOUTIQUE, *, ' " & filtre & " ' , " & top_n_by_rank & " ) AS KEY_TBL " &_
  9.     "   ON BOUTIQUE.ID = KEY_TBL.[KEY] " &_
  10.     " UNION " &_
  11.     " SELECT ID as ID, convert(varchar, DATE_NEWS, 103) AS TITRE_ORI, TITRE AS TITRE_FR, U_LOGIN as U_LOGIN, 5 AS TYPE, KEY_TBL.RANK " &_
  12.     " FROM NEWS INNER JOIN CONTAINSTABLE (NEWS, *, ' " & filtre & " ' , " & top_n_by_rank & " ) AS KEY_TBL " &_
  13.     "   ON NEWS.ID = KEY_TBL.[KEY] " &_
  14.     " ) TMP ORDER BY TMP.TYPE, TMP.TITRE_FR"
  15. function getFiltreFromKeyWord(keyword, style)
  16. dim mots, tmpstr, errs
  17. if style = "CONTAINS" then
  18.  mots = split(keyword, " " )
  19.  i = 0
  20.  errs = 0
  21.  tmpstr = ""
  22.  do while not i > ubound(mots)
  23.   if len(cleanString2(mots(i))) > 2 then
  24.    if tmpstr <> "" then
  25.     tmpstr = tmpstr & " AND " & getSearchPattern(mots(i))
  26.    else
  27.     tmpstr = tmpstr & getSearchPattern(mots(i))
  28.    end if
  29.   else
  30.    errs = errs + 1
  31.   end if
  32.   i = i + 1
  33.  loop
  34.  if errs = ubound(mots) + 1 then
  35.   getFiltreFromKeyWord = "( ""Nouveau"" ) AND ( ""système"" )  AND ( ""recherche"" )"
  36.  else
  37.   getFiltreFromKeyWord = tmpstr
  38.  end if
  39. else
  40.  getFiltreFromKeyWord = cleanString2(keyword)
  41. end if
  42. end function
  43. function getSearchPattern(keyword)
  44. dim tmpstr
  45. if left(keyword, 1) = "!" then
  46.  tmpstr = "NOT "
  47.  keyword = right(keyword, len(keyword) - 1)
  48. end if
  49. if right(keyword, 1) = "+" then
  50.  keyword = left(keyword, len(keyword) - 1)
  51.  tmpstr = tmpstr & "FORMSOF (INFLECTIONAL, " & cleanString2(keyword) & " )"
  52. elseif right(keyword, 1) = "*" then
  53.  tmpstr = tmpstr & "( """ & cleanString2(keyword) & "*"" )"
  54. else
  55.  tmpstr = tmpstr & "( """ & cleanString2(keyword) & """ )"
  56. end if
  57. getSearchPattern = tmpstr
  58. end function
  59. function cleanString2(str)
  60. dim regExp
  61. set regExp = new regExp
  62. regExp.Pattern = "[^A-Za-z0-9_ ']"
  63. regExp.Global = true
  64. regExp.IgnoreCase = true
  65. cleanString2 = regExp.replace(str, "" )
  66. end function


 
=> Je récupère la requête demandée par l'utlisateur, et avec des fonctions en interne, je vais parser sa demande avec une grammaire qui est propre au site, pour ensuite lancer manuellement ma recherche avec les critères que j'ai décidé en fonction de ce que j'ai compris de la requête de l'utilisateur.


Message édité par Arjuna le 24-11-2004 à 15:41:24
n°906714
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 15:41:44  profilanswer
 

Sebastien a écrit :

mnogosearch, the best :-)


Je regarde :)

mood
Publicité
Posté le 24-11-2004 à 15:41:44  profilanswer
 

n°906716
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 15:44:15  profilanswer
 

OK, a m'a l'air pas mal. Payant par contre... Vais voir le prix (à la base, si je demande pour PHP/Linux, c'est pour des clients qui ne veulent pas payer pour leur serveur ;))
 
Euh... :??:
 
Mais :??:
 
Ca marche que sous Windows ???
Ben oui mais non, à ce moment on utilise Index Server, ça marche très bien et ça a l'avantage de pas coûter un centime de plus que la licence Windows ;)
 
-- Edit : Ah non, j'ai rien dit, dans la page "download" il y a une version Unix qui est gratuite :) --


Message édité par Arjuna le 24-11-2004 à 15:48:10
n°906723
simogeo
j'ai jamais tué de chats, ...
Posté le 24-11-2004 à 15:50:05  profilanswer
 

Arjuna > c'est de l'opensource, rien ne t'empeche de l'implementer.  
http://fr.php.net/manual/fr/function.soundex.php


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°906724
Sebastien
Posté le 24-11-2004 à 15:50:22  profilanswer
 

Oui voila c payant pour windows tout comme mysql normalement, mais pour unix (testé et approuve sous debian) c'est gratuit.

n°906725
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 15:52:20  profilanswer
 

simogeo a écrit :

Arjuna > c'est de l'opensource, rien ne t'empeche de l'implementer.  
http://fr.php.net/manual/fr/function.soundex.php


Mouais. En effet, c'est à voir. Cela dit, soundex ne fait pas tout, j'ai surtout besoin de fuzzy (orthographe légèrement variable, prononciation comprise)
 
Cela dit, je ne vous pas trop comment faire bouffer 'H416' au moteur de recherche et lui faire comprendre que c'est "Hilbert" que je recherche :??:


Message édité par Arjuna le 24-11-2004 à 15:54:08

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Moteur de recherche GNU pour Linux/PHP

 

Sujets relatifs
ajouter un module php (oubli à la compil !!)Recherche un site
[php/html] bouton submit avec imageretour erreur de la fonction php mail()
php, pour ne pas afficher d'images...PHP, XML et IE ... des trucs zarbi
compilation d'une couche Ethernet modifiée sur linuxun éditeur hexa en php?
[PHP XML RSS] appli news ultra configurable[PHP/HTML]faire d'une page php l'index de son site
Plus de sujets relatifs à : Moteur de recherche GNU pour Linux/PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR