Załóżmy, że mamy tabelę osób (imię, nazwisko, adres, numer SSN itp.).Porównanie SQL i rozmyte
Chcemy znaleźć wszystkie wiersze, które są "bardzo podobne" do określonej osoby A. Chciałbym zaimplementować pewnego rodzaju porównanie logiki rozmytej A i wszystkich wierszy z tabeli Ludzie. Będzie kilka reguł wnioskowania rozmytego działających osobno na kilku kolumnach (np. 3 reguły rozmytej nazwy, 2 reguły na nazwisko, 5 reguł dotyczących adresu).
Pytanie brzmi: Które z poniższych dwóch podejść byłoby lepsze i dlaczego?
Wdrożenie wszystkich reguł rozmytych jak procedury przechowywane i używać jednej ciężkie SELECT, aby powrócić wszystkie wiersze, które są „bardzo podobne” do A. Takie podejście może obejmować korzystanie Soundex, sim metryczny itp
Wdrożenie jedna lub więcej instrukcji SELECT, które zwracają mniej dokładne wyniki, "raczej podobne" do A, a następnie rozmyte-porównać A ze wszystkimi zwróconymi wierszami (poza bazą danych), aby uzyskać wiersze "bardzo podobne". Tak rozmyte porównanie zostanie wdrożone w moim ulubionym języku programowania.
Tabela Ludzie powinni mieć do 500 tysięcy wierszy, a ja chciałbym zrobić około 500-1000 takich zapytań dziennie. Używam MySQL (ale to jeszcze nie jest brane pod uwagę).
Proszę powiedzieć, jakich używasz rdbms. –
Dlaczego nie użyć przypadku w swoim wyborze, który zwraca 1, jeśli jest podobny, 0 jeśli nie, a następnie sumuje wszystkie kolumny. Te, które są większe niż określony zakres, powinny zostać zwrócone. Wygląda na proste rozwiązanie twojego problemu. –
@JesusZamora: Problem polega na tym, że przede wszystkim wartość podobieństwa może być zmienna (np. 0.43), dlatego mówiłem o "rozmytym porównaniu". Drugi problem polega na tym, że zliczanie tej wartości podobieństwa jest dość trudne i nie wiem, które z tych podejść byłyby bardziej optymalne. –