Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: "Joustava" haku

Sivun loppuun

cj [05.01.2005 15:09:17]

#

Hei!
Pitäs tehä omille sivuille semmonen haku juttu, et se ettii tietoo haku.txt filusta. Osaan kyl tehä semmosen, et jos hakee sanalla MOI, niin sit filussa olevat moi sanat ja linkit tulostetaan, mut haluisin semmosen, et jos hakee vaikka sanalla Photoshop, niin myös sanat photo ja shop ja niitten linkit löytyisivät. Onko mitään hyviä neuvoja? :)

kayttaja-2791 [05.01.2005 15:15:40]

#

Jahas, kuulostaa regexp jutuilta joissa en todellakaan ole mikään haka. Eli PHP:ssä esim. preg_match_all funktiolla voit regexpejä käyttää. Lisätietoa:
https://www.php.net/manual/fi/function.preg-match-all.php
http://www.awot.fi/sf/browser/showfile?cust­=awdoc&subdir=regexp&doc=regexp
http://weitz.de/regex-coach/

leftover [05.01.2005 15:22:44]

#

Arvaa miksi google ei tue tätä toimintoa? Koska tämä on käytännössä mahdoton toteuttaa. Voit toki luoda luettelon erikoissanoista ja niiden hajonnasta, mutta lupaan ja vannon että et jaksa ylläpitää sitä enää 200 erikoissanan jälkeen.

Ohjeista käyttäjät käyttämään muotoa photo+shop joka hakee photoshop, photo ja shop-sivut.

Jos nyt haluat kuitenkin ylläpitää hakusanaluetteloa, voisi se olla vaikka:

<?php

$erikoishakusanat = array (
    "photoshop"   => "photo shop",
    "eripari"     => "eri pari",
    "jokatoinen"  => "joka toinen",
);

if (isset($erikoishakusanat[strtolower($_GET['hakusana'])])) {
    $hakusana = $erikoishakusanat[strtolower($_GET['hakusana'])];
}
else {
    $hakusana = $_GET['hakusana'];
}

?>

T.M. [05.01.2005 15:23:59]

#

Täh? Mikset vaan voi hakea sanoja "photo" ja "shop" erikseen?
Miksi pitää tehdä joku tekoäly joka ymmärtää miten yhdyssanat toimivat :E

cj [05.01.2005 15:38:36]

#

Joo jos kaikki kävijät haluu hakee photoshoppia nii vois ehkä toimii :EEEEEEEE Muta tarkotan ihan semmosta laajaa juttuu... Niinku täällä putkassa. Hain sanalla php ja sain 50 hakutulosta... alin oli Yleinen keskustelu: Joulutodistukset.. tuon tyylistä et se näyttää myös niinku vähän sanan vierestä tai niitä jotka liippaa läheltä.

ajv [05.01.2005 15:45:16]

#

<?php
$hakusana = "sepi";
$texti = "Seppoa sanotaan sepiksi ja keijoa kekeksi";
if(stristr($texti,$hakusana)){
   echo "Löytyi sepi";
}else{
   echo "Ei löytynyt!";
}
?>

cj [05.01.2005 16:02:37]

#

ai :D Kiitos... en ees aatellu et se olis nui helppo :D

Antti Laaksonen [06.01.2005 00:40:47]

#

Sitten voit myös tehdä niin, että erotat hakusanat välilyöntien perusteella ja tulostat sivut, joissa kaikki yksittäiset sanat ovat jossain kohden. Tämä muistuttaa Googlen toimintaa.

Pikseli [09.01.2005 11:32:19]

#

Voit käyttää php:n similar_text-funktiota apuna korjaamaan hakusanoissa olevia kirjoitusvirheitä tai muutoin lähelle hakusanaa osuvia sanoja.

Tuon funktion käyttämisen järkevyys riippuu tietysti hyvin paljon siitä mitä haetaan. Isojen tekstimassojen kanssa hausta tullee aika hidasta.

Teknisesti tämä kannattaa toteuttaa kuten Antti edellisessä viestissä kertoi. Eli luetaan kaikki sanat taulukkoon, ja käydään silmukassa sana kerrallaan läpi ja tarkistetaan kuinka hyvin se täsmää annetun hakusanan kanssa. Luonnollisesti pelkkä välilöynneillä erottelu ei välttämättä riitä, vaan kannattaa poistaa regepseillä kaikki paitsi kirjaimet vertailtavista sanoista. Tai jos se muodostuu liian hitaaksi tuon muutenkin tehoja vaativan operaation ohella, niin sitten voi vaikka str_replacella parsia pois edes yleisimmät väli- ja erikoismerkit.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta