Wpis z mikrobloga

Ciężki temat:

Muszę napisać w mysql pewne zapytanie do wyszukiwarki które wskaże mi sugestie:

a) gdy je przekaże w takiej postaci "ala ma kota" to każde słowo potraktuje jako klucz po którym będzie przeszukiwać tabele kolumne,

b) mam drugą tabelę z której pobieram zabronione słowa które mają być usunięte z wyników wyszukiwania

dwa warunki jednak sprawiają mi kłopot, szczególnie pierwszy,

Ktoś ma jakiś pomysł jak to zrobić?

#mysql #sql #sql #webdev #bazydanych #php
  • 18
@plushy: Z tym że ja nie mam możliwosci zrobienia zmian w tabeli z której wyciągam dane, a jak przeczytałem potrzebuje wrzucić tam cos takiego żeby działało:

post_content text,
@plushy: Nawet proste zapytanie mi nie przechodzi SELECT * FROM

tabela
WHERE MATCH (kolumna) AGAINST ('mysql') dostaje:

Can't find FULLTEXT index matching the column list , jakis pomysł?
@olo1917: Za to bez indeksów możesz zapomnieć o wydajności. Jak nie chcesz po bożemu to możesz stopwordy wyciąć po stronie php, przekształcić tekst w csv i użyć FINDINSET(). Będzie działało ale lukstorpedy nie pobije.
Chyba nie mogę, bo nie będzie to wykorzystywane w jednym egzemplarzu a w wielu, co powodowałoby konieczność tworzenia indeksów w każdym przypadku.


@olo1917: Potrzebujesz tylko raz zalozyc jeden index na kazdej kolumnie na ktorej chceszx to wykorzystywac. To wszystko.

Alternatywa zalecana przy duzych zestawach danych moze byc Sphinx

http://www.mediawiki.org/wiki/Fulltext_search_engines#Sphinx

albo Lucene

http://www.mediawiki.org/wiki/Fulltext_search_engines#Lucene-search
@olo1917: Cudow nie ma. Like zadziala ale bedzie z czasem coraz wolniejszy. Poza tym nie bedzie odfiltrowywal slow smieci. Chcesz szukac frazy "I Ty brutusie" i robisz %i% %ty% %brutusie% i masz kazde slowo ktore zawiera literke i.

To zalezy do czego chcesz to wykorzystywac i jakie teksty masz przeszukiwac. Like jest dobry do przeszukiwania pol z jednym slowem - jak na przyklad nazwa uzytkownika. Jesli tekstu jest wiecej to bierz
@plushy: Zdecydowany jestem od początku. Jeszcze raz dzięki za starania.

@msq: Tabela będzie na nie więcej niż 100 rekordów, a i czas odpowiedzi w tym wypadku nie jest bardzo ważny.