Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównywarka cen - algorytm porównujący
Forum PHP.pl > Forum > PHP
Sajrox
Witam,

Przeszukałem podobne wątki na forum, jedna widzę że nikomu nie udało się podać konkretnego algorytmu do porównania pobranych produktów z pliku xml z tymi znajdującymi się już w sklepie.

Niestety muszę coś takiego opracować i chciałbym przeprowadzić burze mózgów hehe. Może uda się wspólnymi siłami coś osiągnąć w tej sprawie winksmiley.jpg

A więc opisze problemy z którymi się spotykam przy porównaniu produktów w celu dodania do bazy.

1) Przy użyciu FullText. Gdy mamy produkt w pliku xml o nazwie np "Aparat Sony P560" a w bazie posiadam produkt o nazwie "Mio DigiWalker P560" to niestety zapytanie wyświetla ten produkt jako podobny, mimo tego że są to 2 różne rzeczy.

2) Przy użyciu [b]`
  1. <?php
  2. SELECT * FROM products WHERE nazwa_produktu LIKE '%Aparat%' AND `nazwa_produktu` LIKE '%Sony%' AND `nazwa_produktu` LIKE '%P560%';
  3. ?>


niestety porównuje produkty dosłownie. "Aparat Sony P560" oraz "Aparat Sony P560 2GB" wychodzą jako 2 rózne produkty.

Czy ktoś ma jakiś pomysł jak to rozwiązać questionmark.gif Jakiej użyć metody aby to porównać w jakiś logiczny sposób?

Mam nadzieję że pomysłów będzie sporo.
Bo nie tylko ja mam ten problem jak zauważyłem winksmiley.jpg
Kildyt
1) Może po prostu nie bierz pod uwagę cyfr? Jak jest jakiś nowszy model i np. do oznaczenia dodadzą p, to skrypt i tak powinien znaleźć po innych wyrażeniach.

2) Czy ja źle programuje, czy
Cytat
`nazwa` LIKE '%1 slowo produktu%' AND `nazwa` LIKE '%2 slowo produktu%' AND `nazwa` LIKE '%3 slowo produktu%' itd...
jest źle napisane?


Moim zdaniem powinno wyglądać to tak:
Cytat
`nazwa` WHERE `nazwa` LIKE '%1 slowo produktu%'



Ja już się pogubiłem. Gdzie jest nazwa tabeli? Jak dla mnie, to dziwnie to napisałeś. Czy "nazwa" to nazwa tabeli, czy pola?
Sajrox
To miał być tylko przykład by pokazać sam sens.
Chodzi o to że dziele nazwę produktu na pojedyncze słowa i tworze zapytanie w którym po WHERE bedzie to co napisalem czyli
`nazwa` LIKE '%1 slowo produktu%' AND `nazwa` LIKE '%2 slowo produktu%' itd...

Proszę nie traktować tego jako działający kod, ponieważ to tylko przykład. Myślę że każdy wie o co chodzi winksmiley.jpg
Kildyt
Aż kurs mysql przeczytałem, czy na pewno o czymś nie wiem. Przeczytałem i dalej nie wiem.

Co to jest te:
Cytat
AND `nazwa`
?
Jak dla mnie to możesz to dać do warunku, a nie po LIKE.

Napisz lepiej konkretne zapytanie do bazy bo tak się można pogubić.


Edit
No dobra, już zrozumiałem. Sory, ale jakoś nie mogłem sobie to wyobrazić winksmiley.jpg


Edit:
Moja koncepcja sortowania:
Zliczasz pojedyncze słowa (np. Sony), we wszystkich produktach i w tych, w których znajdziesz to wyrażenie oznaczasz ją. Jeżeli kolejne wyrażenie znajdziesz w tym produkcie, to liczby podobnych słów będzie już 2. A później tylko wyświetlić przedmioty, które takich podobnych słów będą miały najwięcej.
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.