Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Wyszukiwanie pełnotekstowe - problem
matix
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


Witam.

Tworzę sobie pewien skrypt i napotkałem dość dziwny problem podczas tworzenia wyszukiwarki. Chcę do zrobić za pomocą pełnotekstowego wyszukiwania ze względu na wydajność, gdyż na stronie jest przewidywany ogromny ruch.

Zapytanie SQL:
  1. SELECT *, MATCH (file_title) AGAINST ('adobe') AS score FROM files;


Wynikiem tego w bazie danych jest wyszukiwanie rekordów mających w sobie napis "adobe", lecz z wynikiem (score) - 0.

Pytanie - dlaczego? Przecież powinien znaleźć te rekordy.
Go to the top of the page
+Quote Post
artega
post
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


Powinien jeżeli zastosujesz klauzule WHERE (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
  1. SELECT *, MATCH (file_title) AGAINST ('adobe' IN BOOLEAN MODE) AS score FROM files WHERE MATCH (file_title) AGAINST ('adobe' IN BOOLEAN MODE)

Jeżeli słowo adobe jest bardzo popularne to zapytanie nic nie zwróci
Go to the top of the page
+Quote Post
matix
post
Post #3





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


Wielkie dzięki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) już śmiga;p
Go to the top of the page
+Quote Post
kicek_
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.01.2008
Skąd: z nienacka

Ostrzeżenie: (0%)
-----


Cytat(artega @ 1.05.2008, 13:11:10 ) *
Powinien jeżeli zastosujesz klauzule WHERE (IMG:style_emoticons/default/winksmiley.jpg)
  1. SELECT *, MATCH (file_title) AGAINST ('adobe' IN BOOLEAN MODE) AS score FROM files WHERE MATCH (file_title) AGAINST ('adobe' IN BOOLEAN MODE)

Jeżeli słowo adobe jest bardzo popularne to zapytanie nic nie zwróci


Mały komentarz ponieważ powyższa odpowiedź wprowadza w błąd, a trafiłem tutaj z pierwszej strony google. Nie ma konieczności wpisywania MATCH ... AGAINST w klauzuli WHERE. mechanizm MATCH ... AGAINST ma za zadanie określić wartość semantyczną zawartości wiersza do w porównaniu ze wzorcem. Jeżeli koledze nie zadziałało zapytanie dla słowa kluczowego 'adobe', to znaczy (jeżeli zostało zapisane w skrypcie prawidłowo), że słowo występuje w więcej niż 50% wierszy jakie są w tabeli. Takie małe ograniczenie ze strony silnika.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 1.10.2025 - 14:01