Jag har en tabell i en MySQL-databas med allehanda företag som jag vill söka i. Sökningen görs på företagsnamn eller bransch företaget tillhör (fält i samma tabell) och (ifall geografisk sökterm angivits) i vilken stad ELLER i vilket län företaget finns.
Jag vet att jag inte sorterar mina resultat efter relevans nu. Det är ett medvetet val då tabellen har så ***** många poster och servern blir ledsen om jag gör det.
Det här är min fråga jag har just nu:
$sql = "SELECT * FROM tblforetag ";
$sql.= "WHERE (MATCH(tblforetag.foretag) AGAINST(:keywords IN BOOLEAN MODE) ";
$sql.= "OR MATCH(tblforetag.bransch) AGAINST(:keywords IN BOOLEAN MODE)) ";
if($locisset) $sql.= "AND (MATCH(tblforetag.lan) AGAINST(:location IN BOOLEAN MODE) ";
if($locisset) $sql.= "OR MATCH(tblforetag.stad) AGAINST(:location IN BOOLEAN MODE)) ";
$sql.= "ORDER BY premium DESC ";
$sql.= "LIMIT $offset, $rpp ";
Gör jag nu en sökning med termen "frisörer" utan geografisk sökterm får jag 17.387 resultat. Gör jag en sökning med termen "frisör" får jag bara 748 resultat. Jag förstår att det är för att den inte matchar tblforetag.bransch längre, men varför blir det såhär?
Frågan verkar stämma. Felet låg i hur jag räknade ut antalet resultat. Tyvärr inser jag nu att MySQL förmodligen inte kommer kunna lösa pucken för mig ändå pga prestandaproblem.
Det är totalt orimligt att byta databas i det här skedet i projektet så jag har fått upp ögonen lite för Lucene. Någon som använt detta med goda resultat? Hur mycket skiljer det verkligen i prestanda? Hur mycket är det att sätta sig in i?
Jag menade inte heller att du skulle byta db, Skapa en tabell med bra nycklar, kör uppdatering av de statiska värdena periodiskt!
Hur många poster har du?
Det är ju alltid svårt att ge tips när det gäller slika tillämpningar och man inte har alla förutsättning klart för sig.
Jag förutsätter att du kan databaser bra, så utan exempel är det svårt att råda!
En nyckel som LKF skulle ju ta de två sista sökningarna i ett nafs!
Man skulle ju också kunna ha översättning mellan sökbegreppet branch och branschkod!
130 ms totalt · 3 externa anrop · v20260731065814-full.55e59744