Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z match against, jeśli za dużo wyników
konradg
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 10.06.2009

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


Może ktoś coś wie w tym temacie. Używam do wyszukiwania MATCH (`kolumna`) AGAINST ('szukany ciag') i teraz jeśli np. szukam jakiegoś ciągu i jest w danej kolumnie zbyt dużo pasujących wierszy to nie zwraca żadnych wyników.
Np. wpisuje php:
Jeśli miałem w danej tabeli 20 wiersz z tym słowem to było ok, jak mam przykładowo 30 to już nie działa.
Czy to się da jakoś naprawić?
Go to the top of the page
+Quote Post
kfc4
post
Post #2





Grupa: Zarejestrowani
Postów: 195
Pomógł: 18
Dołączył: 7.10.2007

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


Może jakimś limitem? A wyświetla jakiś błąd czy tylko nie zawiera wyników?
Go to the top of the page
+Quote Post
konradg
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 10.06.2009

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


Cytat(kfc4 @ 5.08.2009, 09:27:23 ) *
Może jakimś limitem? A wyświetla jakiś błąd czy tylko nie zawiera wyników?

No właśnie po prostu nic nie zwraca
Tak wygląda zapytanie dokładnie
  1. SELECT id, tytul, MATCH(tytul,tresc) AGAINST ("php") AS scores
  2. FROM artykuly WHERE MATCH(tytul,tresc) AGAINST ("php") ORDER BY scores DESC
Go to the top of the page
+Quote Post
kfc4
post
Post #4





Grupa: Zarejestrowani
Postów: 195
Pomógł: 18
Dołączył: 7.10.2007

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


Spróbuj dać limit.
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@kfc4:
Głupoty pleciesz.

@kondradg:
http://dev.mysql.com/doc/refman/5.0/en/ful...l-language.html

Cytat
For example, although the word “MySQL” is present in every row of the articles table shown earlier, a search for the word produces no results:

Kod
mysql> SELECT * FROM articles
    -> WHERE MATCH (title,body) AGAINST ('MySQL');
Empty set (0.00 sec)

The search result is empty because the word “MySQL” is present in at least 50% of the rows. As such, it is effectively treated as a stopword. For large data sets, this is the most desirable behavior: A natural language query should not return every second row from a 1GB table. For small data sets, it may be less desirable.

A word that matches half of the rows in a table is less likely to locate relevant documents. In fact, it most likely finds plenty of irrelevant documents. We all know this happens far too often when we are trying to find something on the Internet with a search engine. It is with this reasoning that rows containing the word are assigned a low semantic value for the particular data set in which they occur. A given word may reach the 50% threshold in one data set but not another.


Ten post edytował phpion 5.08.2009, 09:39:33
Go to the top of the page
+Quote Post
konradg
post
Post #6





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 10.06.2009

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


Cytat(phpion @ 5.08.2009, 10:37:52 ) *

No dzięki. Nie wiedziałem o tym.

A to tak jeszcze się spytam. Da się to jakoś inaczej obejść niż przy pomocy IN BOOLEAN MODE?
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: 2.10.2025 - 04:39