Flera söktermer och MATCH AGAINST

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • prplxr
    Medlem
    • 2012-06-16
    • 557

    #1

    Flera söktermer och MATCH AGAINST

    Hejsan, svejsan!

    Sitter med en SQL-fråga som ska hämta ut data om företag utifrån två inputs, ett frisök och ett geografiskt. Jag vill nu matcha dessa mot ett fulltext-index. Vardera sökterm ska matchas mot varsitt fält och sedan ska resultatet sorteras efter relevans. Är detta genomförbart?

    Den kod jag kommit fram till än så länge (som inte fungerar) är:

    PHP Code:
    $keywords = @$_GET['what'];
    $location = @$_GET['where'];
    $query = $conn->Prepare("
        SELECT *, 
        MATCH(foretag) AGAINST(:keywords) AS kr,
        MATCH(stad) AGAINST(:location) AS lr
        FROM tblforetag 
        WHERE MATCH(foretag) AGAINST(:keywords)
        OR MATCH(stad) AGAINST(:location)
        ");
    $query->BindValue(':keywords', $keywords);
    $query->BindValue(':location', $location);
    $query->Execute(); 
    
    Detta ger alltid noll resultat. Hur går jag vidare med detta? Förslag?

    Mvh
    Avundas aldrig någon det sken av lycka han har för du känner inte hans hemliga sorger.
  • prplxr
    Medlem
    • 2012-06-16
    • 557

    #2
    Jag prövar nu med följande kod:

    PHP Code:
    $keywords = @$_GET['what'];
    $location = @$_GET['where'];
    $locisset = $location != "" ? TRUE : FALSE;
    $sql = "
        SELECT *, 
        MATCH(foretag) AGAINST(:keywords) AS kr
        FROM tblforetag 
        WHERE MATCH(foretag) AGAINST(:keywords)
        ";
    $sql .= $locisset ? "AND stad LIKE :location" : "";
    $query = $conn->Prepare($sql);
    $query->BindValue(':keywords', $keywords);
    if($locisset) $query->BindValue(':location', "%$location%");
    $query->Execute(); 
    
    Det verkar fungera, men jag återkommer om det uppstår problem igen, var så säkra. ;-)
    Avundas aldrig någon det sken av lycka han har för du känner inte hans hemliga sorger.

    Comment

    Working...