Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Full Text Search InnoDB - problem ze fraza
Forum PHP.pl > Forum > Bazy danych > MySQL
zaajcu
Cześć wszystkim

mam mały problem z zapytaniem sql do fulltext. Problemem jest jak user na końcu frazy da znaczek + lub -

  1. AND MATCH(name) AGAINST('Brosz* +MARIA+ a+' IN BOOLEAN MODE)


Błąd jaki generuj

Database_Exception [ 42000 ]: SQLSTATE[42000]: Syntax error or access violation: 1064 syntax error, unexpected $end

Czy jest jakieś sposób aby to przeszło i wyszukało np pies+ kot po wpisaniu pies+?

Jak nie to pozostaje usuwać ostatni znak z stringa jeżeli + lub -
Damonsson
Ciężko, spróbuj może z http://dev.mysql.com/doc/refman/5.0/en/cas...operator_binary
a jak nie zadziała to musiałbyś zamieniać + i - na odpowiedniki np plus i minus, ewentualnie w ustawieniach bazy kombinować.
by_ikar
O ile się nie mylę, to jest to spowodowane tym że twoje zapytanie przelatuje bez żadnego wcześniejszego filtrowania, gdzie znaki specjalne były by escapowane. Pokaż całe zapytanie i cały komunikat błędu.
zaajcu
Już się z tym uporałem, dzięki za chęci wink.gif

Mam jeszcze pytanie z innej beczki,

Jak zrobić aby fulltext przeszukiwał nie zależnie od polskich znaków czyli "który" i "ktory" daje ten sam wynik?

baza jest postawiona na utf8_polish_ci

Kod do mysql

  1. SELECT MATCH(name) AGAINST('kółko' IN BOOLEAN MODE) AS matching, product.id AS id, product.warehouse_id AS warehouse_id, product.customer_id AS customer_id, product.warehouse_category_id AS warehouse_category_id, product.code AS code, product.name AS name, product.product_description AS product_description, product.width AS width, product.height AS height, product.depth AS depth, product.set_description AS set_description, product.curent_quality AS curent_quality, product.is_damaged AS is_damaged, product.damage_quality AS damage_quality, product.damage_description AS damage_description, product.is_deleted AS is_deleted, product.is_for_rent AS is_for_rent, product.rent_price_netto AS rent_price_netto, product.rent_type AS rent_type, product.is_for_3d AS is_for_3d, product.file_3d_extension AS file_3d_extension, product.buying_cost AS buying_cost, product.renovation_cost AS renovation_cost
  2. FROM products AS product
  3. WHERE
  4. is_deleted = '0'
  5. AND warehouse_id = '12'
  6. AND MATCH(name) AGAINST('kółko' IN BOOLEAN MODE)
  7. HAVING matching > 0.200000
  8. ORDER BY matching DESC, name
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.