Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 7.06.2012 Ostrzeżenie: (0%)
|
Witam
Mam problem z konstruowaniem wyrażenia regularnego które będzie szukać danego słowa.
Jakie zadanie ma skrypt ze zmiennej $tresc rozbijamy na wyrazy następnie w pętli for sprawdzamy czy dany wyraz znajduje się w pliku txt dane w pliku txt wyglądają tak: (zmienna $synonimy) {absolutyzm|monarchiaabsolutna|władzaabsolutna} {absolwent|wychowanek} {absorbent|pochłaniacz|substancjapochłaniająca} {absorber|aparatabsorpcyjny} {absorbować|asymilować|przyswajać|wchłaniać|frapować|pochłaniać|zajmować|zaprząt ać} {absorbując|asymilując|przyswajając|wchłaniając|frapując|pochłaniając|zajmując|z aprzątając} {absorbujący|chłonny|wchłaniający} {absorpcja|pochłanianie|wchłanianie} Problem polega na tym iż $wartosc = preg_match('/{.*'.$slowo.'.*}/', $synonimy, $out); sprawdza mi czy występuje dany znak lub ciąg na przykład szukamy litery "i" to jeśli w bazie będzie wyżej wyraz "interpretacja" to zostanie on zakwalifikowany. Druga sprawa jeśli skrypt znajdzie już dane słowo w bazie chce aby zamiast niego pojawiło się cały ciąg w klamrach na przykład {absorbujący|chłonny|wchłaniający} (ale to niby działa) Trzecia sprawa to coś co najbardziej mnie martwi obciążenie serwera podczas szukania słów baza w txt ma prawie 3MB jak rozwiązać ten problem ma ktoś jakiś pomysł za wszystkie sugestie będę bardzo wdzięczny bo morduje się już z tym 3 dni. Aha próbowałem także takiego wyrażenia regularnego $wartosc = preg_match('/\{.*[\{|\|]'.$slowo.'.*\}/', $synonimy, $out); lecz w tym przypadku znajduje mi tylko wyrazy które zaczynają się na daną literę lub ciąg liter a ja nadal chce konkretnie cały wyraz aby się zgadzał. Jeszcze raz bardzo proszę o pomoc z góry dzięki. Ten post edytował adamp359 27.11.2012, 09:31:17 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 7.06.2012 Ostrzeżenie: (0%)
|
Powiem tak testowałem wczoraj i na bazie danych lecz zapytanie które mi podałeś nie spełnia oczekiwań mojego pytania ponieważ zapytanie będzie nadal wyszukiwało mi nawet pojedyncza literę z całego słowa na przykład "i" w słowie "oczekiwać" zostanie zatwierdzone jako zgodne.
dałem takie coś synonimy LIKE '{$slowo|%' or synonimy LIKE '%|slowo| %' or synonimy LIKE '%|slowo}' też takie zapytanie trochę trwa (teraz jestem w pracy i nie pamiętam ile było rekordów w bazie) ale chyba około 40tys albo 400tys nie pamiętam nie pamiętam dam znać wieczorem. Ty w przykładzie nie dałeś { } na końcu i na początku może to i dobry pomysł tylko trzeba by było dać właśnie | na koniec i początek tak to wystarczy jeden LIKE synonimy LIKE '%|slowo| %' ale i tak później muszę je zmienić podczas wyświetlania na { } bo lipa będzie (IMG:style_emoticons/default/wink.gif) A Sqlite ? Chciałbym aby skrypt był "mobilny" bardziej między serwerami aby wystarczyło tylko przerzucenie plików. Ma ktoś jeszcze jakieś sugestie ? Jestem skłonny zapłacić za rozwiązanie tego problemu tylko proszę podać kwotę kto chętny na PW zapraszam. |
|
|
|
adamp359 Wyrażenia regularne problem 27.11.2012, 09:30:28
b4rt3kk Jeśli plik jest duży to siłą rzeczy jego wczytanie... 27.11.2012, 12:20:57
cudny Musisz dać zrzut bazy danych gdzieś aby sobie uzup... 27.11.2012, 14:47:59
adamp359 Dzięki Cudny podsunąłeś mi pomysł zrobię relację m... 27.11.2012, 16:38:53
cudny Na indexach nie ma możliwości aby to nie hulało ja... 27.11.2012, 21:22:13 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 06:41 |