23
lis
2011
admin

Polska odmiana wyrazów w Sphinx

Zdjęcie pochodzi z serwisu flickr.com: http://www.flickr.com/photos/kamikazestoat/94542047/Silnik indeksowania i wyszukiwania Sphinx1 jest obecnie jednym z popularniejszych tego typu rozwiązań na rynku. Zawdzięcza to przede wszystkim swojej prostocie, w porównaniu do podobnych rozwiązań konkurencji (o ile o konkurencji można mówić w świecie wolnego oprogramowania), takich jak Lucene2. Dla użytkownika posługującego się językiem polskim ma jednak pewną dość istotną wadę uniemożliwiającą takie jego wykorzystanie, o jakim marzyli twórcy. Chodzi o tzw. stemming, czyli określanie słowotwórczego pochodzenia wyszukiwanych słów i zwracanie fraz zawierających również słowa podobne znaczeniowo. Np. jeśli w normalnej wyszukiwarce, użytkownik wpisze słowo "lekarz", nie znajdzie "lekarska", pomimo, że wydawać by się mogło, że są to bliskie (semantycznie) słowa. Zauważmy, że w tym wypadku nie możemy wykorzystać również mechanizmy wyszukiwania prefixowego, ponieważ słowo "lekarz" nie jest częścią słowa "lekarski" (zaczyna się różnić po r). Stemming dla języka polskiego jest sprawą dość skomplikowaną, lecz rozwiązali ją panowie Jan Daciuk i Dawid Weiss3, oraz Andrzej Bialecki4. Ich stemmery jednak, niestety, nie nadają się do bezpośredniego wykorzystania w Sphinxie.

20
kwi
2011
admin

Autoryzacja SVN przy użyciu bazy danych

Dzisiaj krótki wpis na temat tego jak wykonać skuteczną autoryzację na serwerze SVN z wykorzystaniem bazy danych. Serwer SVN oczywiście w standardowy sposób konfigurujemy przy użyciu apache'owego modułu mod_dav_svn, wzbogacając go jednak o dobrodziejstwa modułu mod_atuhnz_external dostępnego pod tym adresem.

12
mar
2011
admin

Obsługa poczty przychodzącej w PHP (qmail), cz. 2

W poprzednim wpisie zamieściłem informację o tym, jak utworzyć skrypt pipe dla serwera qmail, który pozwoli nam na obsługę przychodzących e-maili przez program w dowolnym języku (np. PHP). Dzisiaj zaś opowiem co nieco o samym parsowaniu e-maila w języku PHP.

Aby nie odkrywać koła na nowo wykorzystałem klasę MimeMailParser zbudowaną na bazie rozszerzenia Mailparse.

27
lut
2011
admin

Obsługa poczty przychodzącej w PHP (qmail), cz. 1

Harper Lee Letters from Garden & Gun magazine Nie jest wielką tajemnicą, że przy użyciu biblioteki języka PHP można dość sprawnie wysyłać e-maile różnymi sposobami. Wymienić można takie możliwości jak standardowa funkcja mail(), uniksowy sendmail, czy wreszcie protokołu SMTP (dla hardcore'owców: przez sockety, lub dla zabieganych: funkcjami biblioteki standardowej). Co jednak z obsługą e-maili przychodzących? Drogi są w istocie trzy, a to, którą wybierzemy zależeć powinno od tego, jaki problem chcemy rozwiązać. Mnie, ze względu na swoją specyfikę, najbardziej zainteresowały skrypty „pipe” dla serwera qmail. Skrypt otrzymuje maila w postaci surowej, z nagłówkami, załącznikami zakodowanymi base64 i możemy z nim zrobić to, co nam się żywnie podoba, w czasie rzeczywistym.

03
sty
2011
admin

Upgrade Drupala z wersji 6 do 7 - krok po kroku

Już 5.01.2011r. wychodzi długo oczekiwana stabilna wersja jednego z najlepszych CMS-ów — Drupala (czy Drupal to aby tylko CMS?) [1]. W związku z tym wielu z użytkowników wysłużonej wersji oznaczonej numerem 6 prędzej, czy później borykać się będzie z procesem upgrade'u. Ja postanowiłem dokonać tego już teraz.

Witrynę, która posłużyła za królika doświadczalnego można określić jako średniej wielkości (1500 użytkowników, 1400 segmentów, około 100k odsłon tygodniowo). Sporym problemem było to, że część node'ów została zaimportowana ze starszego, własnego systemu i mogło być tam sporo naleciałości. Aktualizacje również pozostawiały wiele do życzenia, w związku z czym część modułów pozostała bez opiekunów. Na pocieszenie został fakt, że migracja ma dotyczyć w sumie tylko danych obsługiwanych przez "core" (node'ów, użytkowników, komentarzy) i głosów z modułu plus1. Żadnych pól CCK (moduł ten został przeniesiony do rdzenia Drupala), żadnych udziwnień i dawno zapomnianych projektów. Dla hecy za to zmieniła się wersja PHP z 5.1.x na 5.3.x.