Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wyrażenia regularne - odrzucenie wyników zawierających słowa
Forum PHP.pl > Forum > Przedszkole
sada
Witam!
Mam następujące pytanie:
Mając jakiś tekst $tx
wyrazy pożądane $p1,$p2,$p3
wyrazy niepożądane $n1,$n2,$n3

Czy jest możliwe utworzenie jednego wyrażenia regularnego, które zwróci true (1) gdy w tekście znajduje się chociaż jeden z wyrazów pożądanych i żaden z niepożądanych.
Nie mam problemu z pożądanymi, ale z niepożądnaymi krucho.
[^wyraz] taki zapis wyklucza poszczególne znaki, ale i tak w ramach "jednego miejsca na znak" w tekście



Ostatecznie zadowoliłbym się rozwiązaniem mini:
Mając jakiś tekst $tx
wyraz niepożądany $n1

zwracającym true (1) jeśli w tekście nie występuje wyraz niepożądany.


NIe chodzi mi o kompletne rozwiązanie, a tylko podanie ewentualnej konstrukcji pozwalającej na to.
Nie ważny też jest problem czy znaleziony wyraz jest wyrazem czy częścią innego wyrazu.

Pozdrawiam forumowiczów
melkorm
Tutaj regex nie jest totalnie potrzebny, tylko operacje na stringach i strpos i wtedy sprawdzasz czy jest jakieś słowo pożądane i jakieś niepożądane.
sada
Potrafię to zrobić za pomocą strpos.
Szukam metody z regex by zastosować do wyszukiwania w bazie Mongo.
Nie chciałbym robić tego na raty tzn. wyszukiwać dokumenty zawierające słowa pożądane a potem z nich wykluczać np przez strpos zawierające niepożądane, chyba że będzie to jedyna droga.
melkorm
Szukanie pełno tekstowe w mongo to nieporozumienie bo musisz walić mnóstwo regexpów, moim zdaniem lepiej zrób tak jak sama specyfikacja mongo sugeruje, czyli dodać pole gdzie będzie tablica wszystkich słów, wtedy o wiele łatwiejsze i szybsze. Tutaj masz bardziej to wyjaśnione : http://www.mongodb.org/display/DOCS/Full+T...Search+in+Mongo.
sada
Dzięki, czytałem ten artykuł wcześniej, ale nawet jak rozbiję każdy tekst na słowa i umieszczę w bazie jako index to szukając frazy np "mapa polski" , nie znajdzie bo będzie "mapa" i "polski" jako dwa wyrazy, natomiast gdy rozbiję frazę podczas szukania na dwa słowa, znajdzie nawet, te które nie występują razem, a to będzie błąd. Po prostu indeksowanie musiało by być zrobione inteligentnie tzn. dodatkowo dodając zlepki wyrazów .
melkorm
No to jeżeli chcesz prawdziwy FULL TEXT SEARCH to może lepiej użyć jakiegoś silnika do tego przeznaczonego ? np Solr ?

Z wyrażeniami regularnymi jeżeli chodzi o te słowa to do pozytywnego to nie problem, a do przeciwieństwa to negative look ahead & look behind (google it).
sada
od nutcha i solra zacząłem. Chciałem to połączyć z hbase ale projekt nie jest jeszcze stabilny i padłem .
Solr zintegrowany z nutchem działa ,
..... teraz dopiero zobaczyłem , że jest klasa Solr w PHP .
Nie wiem jeszcze jak Solr zintegrować z Mongodb ale prawdopodobnie jest to możliwe .
...w takim razie pomógł - dzięki

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.