![]() |
Jag leter efter ett sätt att söka i en MySQL databas.
Jag vill att sökningen endast ska ske i vissa celler i databasen, som jag kan välja ut med "SELECT ...". Dessa celler innehåller text (ofta mycket text i HTML-format). Vad jag vill är att min sökfunktion ska hitta vissa ord i dessa texter. Känner någon till hur detta ska göras eller några färdiga skript? Det är alltså php jag kodar i. |
kolla på Full-Text Search
|
Det funkade med "select * from table where text like \"%$query%\"
order by text"; |
Detta skript fungerade bra efter några mindre ändringar.
|
Citat:
|
Vad säger ni om MATCH i MySQL? Är det den optimala vägen att gå vid sökning?
|
Jag har gjort några direkta tester eller liknande men på större fält så tycker jag Match generellt brukar fungera snabbare än att anvädna Where .. Like och går ju dessutom att få fram relevans så att man kan sortera lite snyggare.
|
Citat:
|
Jag tyckte att "where ... like" fungerade väldigt bra för att söka efter en text-bit i mindre kolumner i tabellen (som inte innehåller så mycket text). Har inte testat med större texter (typ fyllda A4).
Dock stötte jag på det problemet att man får nästan alla "celler" som träffar om man söker på en bokstav. Kanske finns någon lösning för att begränsa sökfrasen till minst 3 tecken, annars visas "inga resultat"? |
Citat:
|
När tråden ändå är vid liv så vill jag passa på och höra om någon har en bra lista med svenska stoppord?
|
Citat:
Låt oss säga att jag var en variabel som är sökfrasen - $q Hur kontrollerar jag att den är minst 3 tecken lång? |
kers: Denna använder jag: http://www.unine.ch/info/clef/swedishST.txt . Kommer inte ihåg vad jag hittade den.
|
Citat:
|
Citat:
Tusen tack! Citat:
|
Citat:
Exempelvis: Kod:
$q = trim($q); trim - tar bort blanka tecken i början och slutet av strängen strlen - beräknar antalet tecken i en sträng Ett tips är att kolla upp funktioner i manualen (php.net). |
Tackar!
|
Bara ett litet fel jag upptäckte: det ska vara
Kod:
if(strlen($q) < 3) { Kod:
if(strlen$q) < 3) { |
Citat:
Kommer att retunera "11". Bara köra en IF stats och kolla om värdet > 11 annars skicka tillbaka med felmeddelande. :) |
Alla tider är GMT +2. Klockan är nu 18:17. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson