Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: [mysql] full text search i szukanie po części frazy

Witam,

Czy istnieje mozliwosc przezukiwania w oparciu o full text search części frazy?

np mamy w bazie danych zdanie "szukanie po części frazy". Jezeli wpisze w wyszkiwarce "ukan", w rezultacie chce dostac wlasnie krotke z tym zasobem.

Udalo mi się uzyskać regułę dla "szuk*" ale w drugą stronę "*szuk" ani "*szuk*" nie da rady.

Ma moze ktos z was pomysl jak stworzyć taką regułą dla full text search mysql?

konto usunięte

Temat: [mysql] full text search i szukanie po części frazy

Przy MySQL możesz korzystać z FULLTEXT (http://dev.mysql.com/doc/refman/5.0/en/fulltext-natura..., który uwzględnia także części wyrazów (jeżeli są dłuższe niż 4 znaki - standardowo, lecz w ustawieniach można zmienić na krótsze ciągi). Tutaj trochę o operatorach: http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolea...

Oczywiście do tabeli musimy dodać właściwe indeksy. Poza tym tabela musi być typu MyISAM, gdyż tylko na tych tabelach działa pełnotekstowe przeszukiwanie.

btw. operator "*" stosuje się do 1 znaku. do kilku znaków, jak w powyższym przypadku, można stosować operator "%". w takim przypadku można działać rówież na LIKE oraz NOT LIKE.Kamil Brenk edytował(a) ten post dnia 14.07.09 o godzinie 16:31
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: [mysql] full text search i szukanie po części frazy

Kamil Brenk:
Przy MySQL możesz korzystać z FULLTEXT (http://dev.mysql.com/doc/refman/5.0/en/fulltext-natura..., który uwzględnia także części wyrazów (jeżeli są dłuższe niż 4 znaki - standardowo, lecz w ustawieniach można zmienić na krótsze ciągi). Tutaj trochę o operatorach: http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolea...

Oczywiście do tabeli musimy dodać właściwe indeksy. Poza tym tabela musi być typu MyISAM, gdyż tylko na tych tabelach działa pełnotekstowe przeszukiwanie.

btw. operator "*" stosuje się do 1 znaku. do kilku znaków, jak w powyższym przypadku, można stosować operator "%". w takim przypadku można działać rówież na LIKE oraz NOT LIKE.Kamil Brenk edytował(a) ten post dnia 14.07.09 o godzinie 16:31

Nie ma opcji. Czytalem juz dev.mysql.com po kilka razy i zrobienie innej reguly niz "fraz*" nie wchodzi w gre.

Chyba ze masz jakies inne podparte informacje.

konto usunięte

Temat: [mysql] full text search i szukanie po części frazy

np mamy w bazie danych zdanie "szukanie po części frazy". Jezeli wpisze w wyszkiwarce "ukan", w rezultacie chce dostac wlasnie krotke z tym zasobem.

LIKE '%ukan%'


Chyba ze masz jakies inne podparte informacje.

REGEXPKamil Brenk edytował(a) ten post dnia 14.07.09 o godzinie 16:55

konto usunięte

Temat: [mysql] full text search i szukanie po części frazy

Roman Piekarski:
Nie ma opcji. Czytalem juz dev.mysql.com po kilka razy i zrobienie innej reguly niz "fraz*" nie wchodzi w gre.

a robisz like, czy match against?
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: [mysql] full text search i szukanie po części frazy

Paweł Chalacis:
Roman Piekarski:
Nie ma opcji. Czytalem juz dev.mysql.com po kilka razy i zrobienie innej reguly niz "fraz*" nie wchodzi w gre.

a robisz like, czy match against?

robie match against. Juz mi wiara sugerowala like ale gdybym chcial zrobic like to bym nie bawil sie w full text search. Like przy duzych bazach danych to bardzo zly wybor. Z checia bym zrobil cos na jakims mechanizmie do indexowania w stylu swinx lub xapian, ale przy obecnym projekcie to nie wchodzi w gre.

konto usunięte

Temat: [mysql] full text search i szukanie po części frazy

Roman Piekarski:
robie match against.

no to niestety, nie zadziała :-/
Daniel Marciniak

Daniel Marciniak Upgrade & Migration
expert

Temat: [mysql] full text search i szukanie po części frazy

Trochę już stary ten wątek, ale trafiłem na niego mając ten sam problem. Ja rozwiązałem to w ten sposób

SELECT
*
FROM
tabela
WHERE
MATCH (indeksowane,kolumny) AGAINST ('*ukan*' IN BOOLEAN MODE)

Może komuś to się przyda.



Wyślij zaproszenie do