WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP + MySQL sökning (https://www.wn.se/forum/showthread.php?t=19689)

Timofey 2007-02-28 22:48

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.

Lundmark 2007-02-28 23:10

kolla på Full-Text Search

Timofey 2007-02-28 23:54

Det funkade med "select * from table where text like \"%$query%\"
order by text";

Timofey 2007-03-01 00:03

Detta skript fungerade bra efter några mindre ändringar.

fors 2007-03-01 10:17

Citat:

Originally posted by alltinggratis@Mar 1 2007, 00:54
Det funkade med select * from table where text like %query%
order by text;

Du bör inte söka med %text%. Det är inte bra rent prestandamässigt då all text i kolumnen måste gås igenom. Använd, som Lundmark sa, Full-Text Search till sökning - som man skall göra.

Sigurd 2007-03-01 10:39

Vad säger ni om MATCH i MySQL? Är det den optimala vägen att gå vid sökning?

Eddie 2007-03-01 10:52

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.

fors 2007-03-02 11:05

Citat:

Originally posted by Sigurd@Mar 1 2007, 11:39
Vad säger ni om MATCH i MySQL? Är det den optimala vägen att gå vid sökning?

Match används ju vid Full-text search. En vanlig WHERE-sats kan man ju använda om man vill leta fram något specifikt värde i en kolumn. Ett exempel är om man letar efter en specifik användare så skall man ju använda WHERE. Däremot om man söker i en text skall man använda Full-text search.

Timofey 2007-03-02 16:18

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"?

fors 2007-03-02 17:30

Citat:

Originally posted by alltinggratis@Mar 2 2007, 17:18
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?

Om du vill begränsa sökfrasen till minst tre tecken och samtidigt vill använda LIKE gör du det enklast med hjälp av php-kod. Full-text search använder en variabel till att sätta minsta längden på ett ord, vanligtvis 3 eller 4.


Alla tider är GMT +2. Klockan är nu 16:46.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson