Mam tabelę z niewielką liczbą wierszy i bez wielu kolumn. Przeprowadzam wyszukiwanie pełnotekstowe w 3 kolumnach.
Mój kod jest
$search_input = trim($_GET["s"]);
$search = mysql_real_escape_string($search_input);
$search = "+".str_replace(" ", "* +", $search)."*";
$sql = "SELECT * FROM table WHERE
MATCH(def, pqr, xyz) AGAINST ("$search" IN BOOLEAN MODE)";
$result = mysql_query($sql);
Mogę poprawnie wyszukiwać hasła takie jak abcdefgh, które są obecne jako ... abcdefgh ....
Ale otrzymuję pusty zestaw z wyszukiwanymi hasłami, takimi jak ABC, gdzie we wpisie tabeli jest coś podobnego abc-123, a także terminy takie jak abcdefghs. (zauważ, że jest to liczba mnoga powyżej)
Oczywiście muszę wdrożyć częściowe wyszukiwanie lub coś w tym rodzaju.
Ale jak zaimplementować takie wyszukiwanie? Czy jest lepszy sposób na przeszukiwanie całej tabeli na podstawie danych wprowadzonych przez użytkownika?
Wspominaj wszystko, co robię niepoprawnie.
EDYTOWAĆ : Dodając * po każdym słowie, teraz mogę także wyszukiwać abcde, ale powyższe problemy pozostają.
Odpowiedzi:
1 dla odpowiedzi № 1Czy masz na myśli, że nie otrzymujesz wyników dla kombinacji 3 liter? Jeśli tak, być może osiągasz długość indeksu mysql (który zwykle jest ustawiony na 3)
Więcej informacji tutaj - http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html