![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 Ten post edytował sada 16.06.2012, 11:25:48 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
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.
Ten post edytował melkorm 16.06.2012, 12:11:58 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
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.
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 .
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
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). -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 16:25 |