Reptile ReX
12.04.2011, 16:42:46
Chcę zrobić wyszukiwarkę, która wyświetla wpierw wyniki po title a potem po opisie.
Wydaje się proste:
SELECT * FROM tabela WHERE MATCH (title,opis) AGAINST ('fraza')
Ale mam pewien problem
ponieważ opis i title znajdują się w innych tabelach.Jak się za to zabrać aby wyświetlić wpierw wyniki które posiadają frazę w title a potem te które posiadają frazę w opisie?
Proszę o pomoc.
pmir13
12.04.2011, 17:15:16
Jaka jest struktura tych tabel? Rozumiem, że masz oddzielone tytuły i opisy po to, by można było wstawiać różne opisy dla danego tytułu przez wielu użytkowników?
Czemu nie możesz po prostu użyć dwóch kolejnych zapytań, osobno dla tytułu i osobno dla opisu, skoro i tak php to potem wypluwa?
Reptile ReX
12.04.2011, 20:31:07
Jeżeli użyję po sobie 2ch zapytań to otrzymuję duplikaty, czyli niekiedy takie same wyniki ponieważ np fraza znajduję się w tytule i w opisie.
Ja nie wiem dlaczego jest title i opis w osobnych tabelach, bo tutaj chodzi o proste forum, ja tylko poprawiam wyszukiwanie po kimś.
PiterosWeb
12.04.2011, 20:39:23
musisz zastosować JOIN i ORDER BY w ten sposób chyba będzie najprościej.
pmir13
12.04.2011, 21:49:54
SELECT * FROM tytuly WHERE MATCH ( title ) AGAINST ('fraza')
SELECT * FROM tytuly LEFT JOIN opisy ON opis.idtytulu = tytuly.id
WHERE MATCH (opisy.opis) AGAINST ('fraza') AND !MATCH ( tytuly.title ) AGAINST ('fraza')
Reptile ReX
12.04.2011, 23:37:53
Dzięki wielkie.
A teraz mam jeszcze jedno pytanie.
Chcę wyświetlić tylko 300 znaków opisu ale w taki sposób, aby wyszukiwana fraza (załóżmy niech to będzie $_GET['szukaj']) znajdowała się w tym okrojonym tekście.
Dokładniej:
Chcę wyciągnąć z bazy danych 300 znaków z pola opis w taki sposób, aby zawsze zawarta była w nim fraza z GET'a.
Czy jest to możliwe ? Jak się za to zabrać?
Ja osobiście pomyślałem o strpos i substr, ale jakoś nie mogę ułożyć sobie tego w głowie, dlatego proszę o ew. wskazówki, abym mógł wykonać coś takiego.
Pozdrawiam
pmir13
13.04.2011, 00:20:23
$okrojonytekst = substr( $calytekst, strpos( $calytekst, $fraza ) - $znakowprzedfraza, 300
);
Reptile ReX
13.04.2011, 00:24:37
Dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.