Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Porównywarka cen - algorytm porównujący, Algorytm porównujący produkty w sklepie
Sajrox
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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

Ten post edytował Sajrox 9.09.2008, 22:19:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Kildyt
post
Post #2





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Kildyt 9.09.2008, 22:10:35


--------------------
Go to the top of the page
+Quote Post
Sajrox
post
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Kildyt
post
Post #4





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Kildyt 10.09.2008, 06:51:21


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 02:04