![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 2.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Muszę się zmierzyć z porównaniem tekstu wprowadzanego przez użytkownika z wieloma tekstami zawrtymi w bazie.
Ponieważ tekst wprowadzany może być wprowadzony w różny sposób (pisownia, przecinki, spacej, znaki specjalne), wydzielam poszczególne wyrazy do tablicy i ją chcę porównać z tekstem w bazie (wpisanym w równie dowolny sposó(IMG:style_emoticons/default/cool.gif) . Mam "Selecta" i pętlę while. W pętli while musze rozbić tekst pobrany z bazy na tablicę i porównywać jej kazdy element z każdym elementem tablicy wprowadzonej. Wyglądać to będzie mniej więcej tak:
Pytanie: Czy to poprawna konstrukcja? Czy da się to zrobić inaczej, optymalniej? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj o porównaniach na kolumnach z indeksem fulltext ewentualnie LIKE. Twoja konstrukcja jest do d*** bo pobierasz wszystkie rekordy z bazy
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 2.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Myślałem, że muszę przetworzyć wszystkie wiersze w tabeli z wybraną jedną tylko kolumną zawierającą teksty.
Jak inaczej sprawdzić, czy którykolwiek z wyrazów w tekście: 'Abc, Bcd, Efg, Ghi' nie występuje we wcześniej wprowadzonych do bazy łańcuchach typu np. 'Xyz, Xxx', 'Yyy, Zzz', 'Abc, Pqr', 'Efg', 'Hwdp, Ghi'. LIKE porównuje mi cały 'Abc, Bcd, Efg, Ghi' z całym tekstem pobranym z bazy, czyli np. z 'Abc, Pqr'. Takie porównanie da mi flase, a akurat w tym wypadku powinno dać true, gdyż dowolny wyraz z 'Abc, Bcd, Efg, Ghi' znajduje się w łańcuchu 'Abc, Pqr'. Czyż źle myślę? Skrypt napisany przy tym założeniu póki co wydaje się działać. Nie potrafię tego zapisać optymalniej (IMG:style_emoticons/default/sad.gif) Dzięki za nakierowanie. Jakby lepiej i szybciej działa SELECT 'kolumna' FROM tabela WHERE MATCH() AGAINST() Ten post edytował wicy 1.10.2011, 08:41:28 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 21:36 |