Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Łączone zapytanie mysql dla szukania fraz i słów
www.aukcje.fm
post
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 4.05.2010

Ostrzeżenie: (20%)
X----


Witam,

Temat : połączenie 4 zapytań w jedno

Szukamy na potrzeby systemu wyszukiwarki dla dalszej obróbki zapytań i wyników pewnym zapytaniem sql dla full text, lecz nie zdaje ono dobrych rezultatów.

Zadanie : budowa jednego zapytania w pliku php (nawet przy wykorzystaniu tabeli tmp) bez względów na długość trwania zapytania.

Odpowiedź : może być inne zapytanie ale generalnie aby ustawiało najpierw frazy "te w cudzysłowu" potem te +występujące +razem, potem te ze zwykłego match against ('nasza fraza') a potem te z systemu querty expantion (czyli dobierane z podwójnego wyszukiwania). Więc z połączenia 4 zapytań a każde (jeżeli to możliwe) z ilością występowania.

Czyli chcemy połączyć cztery wyszukiwania numerów ID w jedno z pogrupowanymi wynikami bez powtarzania ID

1)
  1. SELECT * FROM `tabela` WHERE `tekst` LIKE '%nasza fraza%'


2)
  1. SELECT id
  2. FROM `tabela`
  3. WHERE MATCH `tekst`
  4. AGAINST ('+nasza +fraza' IN BOOLEAN MODE )


3)
  1. SELECT id
  2. FROM `tabela`
  3. WHERE MATCH `tekst`
  4. AGAINST ('nasza fraza')


4)
  1. SELECT id
  2. FROM `tabela`
  3. WHERE MATCH `tekst`
  4. AGAINST ('nasza fraza' WITH QUERY EXPANSION )



hmm czy ktoś mnie zrozumie :|
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
wiiir
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

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


no to robisz uniona albo insert into tabela_tymczasowa i pozniej prosty select

W czym problem o nie bardzo kumam.
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  1. SELECT * FROM `tabela` WHERE (`tekst` LIKE '%nasza fraza%') OR (MATCH `tekst`AGAINST ('+nasza +fraza' IN BOOLEAN MODE )) OR (MATCH `tekst` AGAINST ('nasza fraza')) OR (MATCH `tekst`AGAINST ('nasza fraza' WITH QUERY EXPANSION ))

dla lepszej czytelności poszczegołne warunki dałem w nawiasach.
Go to the top of the page
+Quote Post
www.aukcje.fm
post
Post #4





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 4.05.2010

Ostrzeżenie: (20%)
X----


mmmmmmm smile.gif

A jak to wyświetlić z podziałem 4 fazowym

(wyniki z pierwszego zapytania)
(wyniki z drugiego zapytania)
(wyniki z trzeciego zapytania)
(wyniki z czwartego zapytania)

Bez powtarzania wyników w drugim z pierwszego, w trzecim z pierwszego i drugiego, w czwartym z trzeciego drugiego i pierwszego) oto jest pytanie i jak w dodatku podać to w jakimś rankingu trafności.

To było by już serio git.




Go to the top of the page
+Quote Post
mmmmmmm
post
Post #5





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Pikuś...
  1. SELECT *, Case When (`tekst` LIKE '%nasza fraza%') then 1 When (MATCH `tekst`AGAINST ('+nasza +fraza' IN BOOLEAN MODE )) then 2 ... end warunek FROM `tabela` WHERE (`tekst` LIKE '%nasza fraza%') OR (MATCH `tekst`AGAINST ('+nasza +fraza' IN BOOLEAN MODE )) OR (MATCH `tekst` AGAINST ('nasza fraza')) OR (MATCH `tekst`AGAINST ('nasza fraza' WITH QUERY EXPANSION )) ORDER BY warunek
Go to the top of the page
+Quote Post
www.aukcje.fm
post
Post #6





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 4.05.2010

Ostrzeżenie: (20%)
X----


error mały

#1064 - Something is wrong in your syntax obok 'end warunek FROM `tabela` WHERE (`tekst` LIKE ' w linii 2



a już ok. nie dałem cyfry 4.

Teraz widzę że ładnie podaje wyniki, ale... ale powtarza numery ID. Jak zrobić aby nie powtarzało numerów id ?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 00:43