[PHP] Google-like site search

Pagina: 1
Acties:

Onderwerpen


  • HappyGilmore
  • Registratie: Maart 2002
  • Laatst online: 27-05 23:21

HappyGilmore

Hits it over the highway ...

Topicstarter
Ik ben op zoek naar een google-like search engine voor PHP MySQL. Ik heb al een manier om te zoeken op mijn pagina maar ik wil dat de resultaten niet als link naar de pagina worden weer gegeven maar dat er ook een stuk tekst bijstaat. Net als bij google. :+
Voorbeeld: Ik zoek op tweakers dan moet dit een van de resultaten zijn:
Tweakers.net - 2916 bezoekers online waarvan 744 ingelogd!

Nieuwsberichten van maandag 25 november Hardware Software Games Internet. Reviews, features & aankondigingen Tweakers.net crew .plans. Onderwerp, Schrijver, Description: Nieuws over hardware, software en Internet. Daarnaast hardware tests, een zeer druk bezocht forum...

http://www.tweakers.net/
Ofterwijl een stuk tekst voor en na het woord (zo'n 4 woorden ervoor en 3 erna)

Ik heb al gekeken bij http://www.hotscripts.com maar dan staan alleen complete searchengines waar ik niet uit kan destileren hoe ze dat precies met die tekst voor en na doen. :?

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Je kan toch de Description meta tag van de site uitlezen :?

Je kan ook de url openen en de eerste 50 woorden opvragen en die parsen maar dat lijkt me wel wat veel tijd kosten (met oog op trage responsetijd)

* BierPul ziet het probleem niet zo :) als je in de text kan zoeken (anders had je geen gevonden pages) waarom kan je het dan niet parsen ;)

[ Voor 25% gewijzigd door BierPul op 28-11-2002 16:12 ]

Ja man


  • HappyGilmore
  • Registratie: Maart 2002
  • Laatst online: 27-05 23:21

HappyGilmore

Hits it over the highway ...

Topicstarter
Nee, dat bedoel ik niet. Ik zoek in een lap tekst naar het ingtypte woord. Als hij het woord heeft gevonden dan wil ik dat ie de 4 woorden ervoor en 3 erna ook meeneemt.

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 04-09 19:14
PHP:
1
2
3
4
5
6
7
8
9
10
$array = explode(" ",$text);
for ($i = 0;$i < count($array);$i++) {
   if ($array[$i] == $word) {
        echo "Resultaat: " . $blablalbal . "<br />";
        echo "URL: " . $url . "<br />";
        echo "Woorden gevonden: " . $array[$i];
    } else {
        echo "Niets gevonden ;(";
    }
}
Of wat bedoel je nu :?

[ Voor 34% gewijzigd door zeroxcool op 28-11-2002 16:16 ]

zeroxcool.net - curity.eu


  • Config
  • Registratie: Januari 2000
  • Laatst online: 06-01 00:49
Jah ik zou ook wel willen weten hoe Google dat doet, die snelle searches, hightlighting (binnen een paar tienden van seconden pagina's af gaan str_replace()'en :? :S).

tis ook niet voor niks dat Google dat verkoopt enzo :+

  • HappyGilmore
  • Registratie: Maart 2002
  • Laatst online: 27-05 23:21

HappyGilmore

Hits it over the highway ...

Topicstarter
De vraag is hoe ik uit een tekst, als ik daarin een bepaal woord gelocaliseerd heb, de 3 woorden voor dit woord en na 4 woorden kan pakken of zo te laten zien in welke context het woord voorkomt.

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 04-09 19:14
Ik dacht dat Google ontzettend veel cachet. Het backend serverpark zoekt naar websites en maakt dus cache voor frontend.

zeroxcool.net - curity.eu


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Config schreef op 28 November 2002 @ 16:17:
Jah ik zou ook wel willen weten hoe Google dat doet, die snelle searches, hightlighting (binnen een paar tienden van seconden pagina's af gaan str_replace()'en :? :S).

tis ook niet voor niks dat Google dat verkoopt enzo :+
http://www.google.com/technology/pigeonrank.html :z

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 04-09 19:14
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?

$array = explode(" ",$text); 
for ($i = 0;$i < count($array);$i++) { 
   if ($array[$i] == $word) { 
        echo "Resultaat: " . $blablalbal . "<br />"; 
        echo "URL: " . $url . "<br />"; 
        echo "Woorden gevonden: " . $array[$i - 4] . " " . $array[$i - 3] . " " . $array[$i - 2] . "<b>" . $array[$i] . "</b> " . $array[$i + 1]; 
    } else { 
        echo "Niets gevonden ;("; 
    } 
}
?>

Zoiets dan? Wel ifjes maken of er wel een array[i - 3] enzo is.

[ Voor 41% gewijzigd door zeroxcool op 28-11-2002 16:25 . Reden: argh ]

zeroxcool.net - curity.eu


  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Ik denk alle woorden
PHP:
1
preg_split("/\s+/",$string);


Dan krijg je een array van alle lossen woorden gescheiden op spatie en tab dan als je het woord heb gevonden vanaf die array index 4 omhoog tellen en 3 terug :?

zoals hierboven dus ik zou alleen mij split functie gebruiken ik deed het eerst ook op " " en daar kreeg ik toen hele ranzige data op terug :(

[ Voor 26% gewijzigd door BierPul op 28-11-2002 16:24 ]

Ja man


  • HappyGilmore
  • Registratie: Maart 2002
  • Laatst online: 27-05 23:21

HappyGilmore

Hits it over the highway ...

Topicstarter
LOST_GUNT schreef op 28 november 2002 @ 16:23:
Ik denk alle woorden
PHP:
1
preg_split("/\s+/",$string);


Dan krijg je een array van alle lossen woorden gescheiden op spatie en tab dan als je het woord heb gevonden vanaf die array index 4 omhoog tellen en 3 terug :?

zoals hierboven dus ik zou alleen mij split functie gebruiken ik deed het eerst ook op " " en daar kreeg ik toen hele ranzige data op terug :(
Ja, dit lijkt me wel wat ;)
We gaan weer vrolijk verder knutselen, thx

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Als je in HTML gaat zoeken moet je ook alle rare HTML data eruit mikken, Strip tags doe dat wel ok, en daarna ook ff zorgen dat je alleen letters en cijfers binnenkrijgt anders krijg je ook lekker alle komma's en bende binne :)

[tip mode]
/^[a-zA-Z0-9]+$/;
[/tip_mode]

:P

* BierPul vraagt zich af hoe is om lekker te proggen bij ondergaande zon op Curacao :P

[ Voor 17% gewijzigd door BierPul op 28-11-2002 16:35 ]

Ja man


  • HappyGilmore
  • Registratie: Maart 2002
  • Laatst online: 27-05 23:21

HappyGilmore

Hits it over the highway ...

Topicstarter
LOST_GUNT schreef op 28 November 2002 @ 16:33:

* HappyGilmore vraagt zich af hoe is om lekker te proggen bij ondergaande zon op Curacao :P
offtopic:
Ondergaande zon? Die zie ik helaas niet want dan zit ik in mijn kantoor :'(
Alleen tijdens het weekend 8) dan word ik lekker bruin ;)

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07 12:07
je zou natuurlijk de gratis webservice van google kunnen gebruiken... www.flash-db.com ...

  • HappyGilmore
  • Registratie: Maart 2002
  • Laatst online: 27-05 23:21

HappyGilmore

Hits it over the highway ...

Topicstarter
PHP:
1
2
preg_replace("/(\>(((?>[^><]+)|(?R))*)\<)/ie",
"preg_replace('/(?>$searchword+)/i', '<span class=\"highlight\">$searchword</span>', '\\0')", $text);


Vervangt de string $searchword met een gehighlighte versie, maar ook binnenin een woord. Wat ik nu wil is dat er alleen hele woorden vervangen worden.

Dus bv:

Ik zoek op appel en dan krijg ik als resultaat ook appeltaart. Terwijl appeltaart genegeerd zou moeten worden. Nu kan dat met \b volgens mij, maar aangezien deze regular expression gekopieerd is uit de php.net documentatie heb ik geen id waar ik die moet plaatsen om alleen hele woorden te kunnen selecteren.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

niet $searchword letterlijk vervangen, maar alleen als ervoor 't begin van de string is ^ of een non-word charachter (\W), en aan het v/h woord het einde van de string $ of een non-word character (\W):
PHP:
1
2
3
4
5
6
7
8
9
preg_replace ( 
   '/(\W|^)(' . preg_quote ( $searchword, '/' ) . ')(\W|$)/ie', 
   '"$1" . 
    "<span class=\"hilite\">" 
      . htmlentities ( "$2" ) . 
    "</span>" . 
    "$3"', 
    // ....
);

zoiets :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Ik wil ook zoiets maken:

Stel dit is de text waar je in wilt zoeken:
dit is een zoekstring met een hoop text er in waarin er ook weer een woordje dik moet worden gemaakt of een ander kleurtje. Het kleurtje kan je trouwens zelf uitkiezen. het woordje is ook maar een ding.
hier voorzie ik drie situaties:
[1] Het zoekwoord komt exact een maal op de pagina voor:
Wanneer dit zo is en er wordt gezocht op 'zoekstring' wil je natuurlijk de hele text weergeven want dat kan makkelijk en is beter dan alleen drie woorden er voor en drie woorden er na:
dit is een zoekstring met een hoop
[2] Het zoekwoord komt aantal maal op de pagina voor:
Stel je zoekt op het woord 'woordje'.
Het liefst zou ik dan als resultaat hebben:
ook weer een woordje dik moet worden gemaakt .... zelf uitkiezen. het woordje is ook maar een ding.
[3] Het zoekwoord komt veel maal op de pagina voor:
Zoek je op het woordje 'een' en je gebruikt de techniek om 3 woorden er voor en er na te nemen dan zou je zonder controle het volgende krijgen
dit is een zoekstring met .... zoekstring met een hoop text er in .... er ook weer een woordje dik moet ... gemaakt of een ander kleurtje. Het kleurtje kan je ... woordje is ook maar een ding.
terwijl ik liever het volgende zou zien (vooral eerste stukje)
dit is een zoekstring met een hoop text er in .... er ook weer een woordje dik moet ... gemaakt of een ander kleurtje. Het kleurtje kan je ... woordje is ook maar een ding.
Maar hoe kan je deze drie dingen nou bereiken?

[ Voor 2% gewijzigd door drm op 29-11-2002 12:01 . Reden: quote dus :) ]


Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
Gebruik ajb quote, dat houd het venster een beetje in vorm :)
Pagina: 1