Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

SHAAAADOW

[PHP & MySQL] Słowa kluczowe - coś w stylu encyklopedii

Rekomendowane odpowiedzi

Witam,

 

Mam do rozwiązania pewien problem, do wykonania jest coś w stylu encyklopedii. Mamy 2 działy -> Artykuły i Encyklopedia. Przy wpisach encyklopedii dodawane są słowa kluczowe np. Jan Kowalski. I teraz w wpisach w "Artykułach" wystąpienia słów z Encyklopedii mają linkować do konkretnych wpisów w Encyklopedii. Ogólnie wszystko wygląda prosto..

 

Tylko że wszelkie zmiany słów w encyklopedii mają od razu aktualizować się w wpisach w artykułach, mają być powiązane tylko i wyłącznie z jednym wpisem encyklopedii. Dodajac wpis w encyklopedii slowa maja dzialac dla artykulow juz obecnych w bazie jak i kolejnych dodawanych. Czy ktos wykonywal cos podobnego?

 

Z góry mówie że styl Wikipedii tu nie pasuje ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie wiem czy dobrze Cie zrozumielem, ale czy mam rozumiec, ze nie chcesz linkowac slow w czasie generowania strony z artukulem tylko na sztywno zapisac artykul w bazie z linkami ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie wiem czy dobrze Cie zrozumielem, ale czy mam rozumiec, ze nie chcesz linkowac slow w czasie generowania strony z artukulem tylko na sztywno zapisac artykul w bazie z linkami ?

 

Właśnie trochęto zakręciłem chyba.. Generalnie to wszystko ma być na żywca praktycznie, to nie mój pomysł.. ja mam go tylko zrealizować.. ;) Przy dużej ilości danych robi się tu cholerne obciążenie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja zrobilbym tak zeby linkowalo w czasie pobierania artykulu i wtedy znika problem odswiezania artykulow.

Takie cos moze sie wydawac malo wydajne, ale wszystko zalezy od tego jak sie taki mechanizm napisze.

Ja zrobilbym tak:

1. Pobieramy tresc artykulu

2. Pobieramy slowa kluczowe z tabeli encyklopedii ktore znajduja sie w tresci pobranego artykulu.

3. Linkujemy slowa artykulu literujac po wynikach z punktu 2.

Mysle, ze powinno dzialac szybko :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Najefektywniej byłoby trzymać wszystkie słowa z encyklopedii gdzieś w pamięci, najlepiej wspólnej dla wszystkich wątków/procesów (nie znam PHP na tyle, żeby ocenić czy to wykonalne i jak sie do tego zabrać), żeby przy artykule na 1000 słów nie uderzać 1000 razy do bazy. Jeżeli haseł z encyklopedii będzie dużo warto trzymać je w specjalnej strukturze do tego przeznaczonej, np. drzewie trie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Najefektywniej byłoby trzymać wszystkie słowa z encyklopedii gdzieś w pamięci, najlepiej wspólnej dla wszystkich wątków/procesów (nie znam PHP na tyle, żeby ocenić czy to wykonalne i jak sie do tego zabrać), żeby przy artykule na 1000 słów nie uderzać 1000 razy do bazy. Jeżeli haseł z encyklopedii będzie dużo warto trzymać je w specjalnej strukturze do tego przeznaczonej, np. drzewie trie.

Brak mi slow :E

PHP to nie C++.

 

"żeby przy artykule na 1000 słów nie uderzać 1000 razy do bazy"

A po co ?

Alternatywny i nieporownywalnie szybszy sposob podalem wyzej.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Alternatywny i nieporownywalnie szybszy sposob podalem wyzej.

 

Tylko wyjaśnij jak chcesz wiedzieć które słowa kluczowe pobrać nie przeglądając całego artykułu?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tylko wyjaśnij jak chcesz wiedzieć które słowa kluczowe pobrać nie przeglądając całego artykułu?

A po co mam "przegladac" ?

Nie musze rozbijac tresci na pojedyncze slowa i istnienie kazdego z osobna sprawdzac w bazie.

Poza tym w encyklopedii moga byc pewne zlozone wyrazy np "Kubus Puchatek".

Jak napisze tresc:

"Pewnego dnia Kubus Puchatek szedl przez las"

to gdybym rozbil go na slowa i szukal w bazie to nie znalazlbym tego co trzea.

 

1. Pobieramy tresc artykulu

SELECT tresc FROM artykuly WHERE art_id = X

 

2. Pobieramy slowa kluczowe z tabeli encyklopedii ktore znajduja sie w tresci pobranego artykulu.

SELECT wyraz_id, wyraz FROM encyklopedia WHERE LOCATE(wyraz, '$tresc') > 0

 

3. Linkujemy slowa artykulu literujac po wynikach z punktu 2.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dzieki za inicjatywe.. ;)

 

Słowa/frazy w 50-70% będą z reguły właśnie minimum 2 wyrazowe. Wezmę pod uwagę te informacje przy planowaniu, nie chcę na siłę tego zrobić żeby chodziło, bo wiem że to nie jest sprawa do zrobienia na odczepne, ilość danych ciągle będzie rosła i musi to być jakoś z głową rozwiązane.

 

Jak ktoś ma jakieś jeszcze wizje, pomysły to chętnie wysłucham..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

2. Pobieramy slowa kluczowe z tabeli encyklopedii ktore znajduja sie w tresci pobranego artykulu.

SELECT wyraz_id, wyraz FROM encyklopedia WHERE LOCATE(wyraz, '$tresc') > 0

 

Wydaje misię, że takie zapytanie tak czy inaczej zajedzie bazę przy większym obciążeniu, ale nie sprawdzałem, specem od MySQL też nie jestem więc nie będę się upierał.

 

Dzieki za inicjatywe.. ;)

 

Słowa/frazy w 50-70% będą z reguły właśnie minimum 2 wyrazowe. Wezmę pod uwagę te informacje przy planowaniu, nie chcę na siłę tego zrobić żeby chodziło, bo wiem że to nie jest sprawa do zrobienia na odczepne, ilość danych ciągle będzie rosła i musi to być jakoś z głową rozwiązane.

 

Jak ktoś ma jakieś jeszcze wizje, pomysły to chętnie wysłucham..

 

A rozważałeś już problem odmiany, tzn gdy w tekście wystąpi słowo kluczowe, ale w innym przypadku?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A rozważałeś już problem odmiany, tzn gdy w tekście wystąpi słowo kluczowe, ale w innym przypadku?

Dlatego jesli ma to byc zrobiione profesjonalnie to lepiej utworzyc trzecia tabele ze slowami kluczowymi (odmianami i innymi okresleniami) powiazanymi z kluczem podstawowym jednego opisu w encyklopedii.

Slowa te powynny byc pisane tylko z malych liter i byc porownywane z tekstem w ktorym znaki tez sa zamienione na male (slowa powynny byc juz tak wprowadzone natomiast tekst konwertujemy po stronie skryptu).

 

Dodatkowo juz po stronie skryptu przy odnajdywaniu w tekscie slow kluczowych pobranych z bazy do podlinkowania radzilbym kontrolnie uzyc wyrazen regularnych z zastosowaniem \b zeby uniknac sytuacji w ktorych jedne slowa kluczowe sa fragmentami innych np jak w tekscie napiszemy "preprocesor" to z bazy pobiora sie slowa "proces", "procesor", "preprocesor" i wtedy rezultatem bedzie bledny kod wynikowy...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przepraszam za niedopowiedzenie, tak normalnie wszystkie przypadki również są przypisane, i do tego jeszcze opcja żeby było ciekawiej dla każdego przypadku jeśli występują jako osoby mają zostać dodane ich tytuły (np. ks., mgr, dr) i razem z przypadków i tytułów stworzyć wszystkie możliwe wystąpienia i dopiero je linkować.

 

Chora sprawa ogólnie..;)

post-54058-128464319755_thumb.jpg

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...