나는 파일 (synonyms.dat)을 통해 구문 분석하고 약 150k 단어에 대해 그들의 상위 단어와 동의어 목록을 조정하는 PHP 스크립트를 작성 중입니다. 파일에서Preg-Match-All - 동의어 파일
예 : 예에서
1|2
(adj)|one|i|ane|cardinal
(noun)|one|I|ace|single|unity|digit|figure
1-dodecanol|1
(noun)|lauryl alcohol|alcohol
1-hitter|1
(noun)|one-hitter|baseball|baseball game|ball
10|2
(adj)|ten|x|cardinal
(noun)|ten|X|tenner|decade|large integer
100|2
(adj)|hundred|a hundred|one hundred|c|cardinal
(noun)|hundred|C|century|one C|centred|large integer
1000|2
(adj)|thousand|a thousand|one thousand|m|k|cardinal
(noun)|thousand|one thousand|M|K|chiliad|G|grand|thou|yard|large integer
**10000|1
(noun)|ten thousand|myriad|large**
내가 연결할 위에 만,로 .DAT 파일을 읽는의 무수한 단어 1000
에 큰 내가 시도 다양한 방법 memory는 file_get_contents를 사용하고 \ n에서 파일을 폭발시키고 다양한 배열 검색 기술을 사용하여 '부모'단어와 동의어를 찾습니다. 그러나 이것은 매우 느리고 더 자주 내 웹 서버를 손상시키지 않습니다.
필자가해야 할 일은 preg_match_all을 사용하여 문자열을 분해 한 다음 해당 문자열을 반복하여 데이터베이스에 삽입하는 것입니다.
$contents = file_get_contents($page);
preg_match_all("/([^\s]+)\|[0-9].*/",$contents,$out, PREG_SET_ORDER);
이 각
1|2
1-dodecanol|1
1-hitter|1
일치하지만 각 경기, IE 동의어 자신 사이에 필드를 연결하는 방법을 모르겠어요.
이 스크립트는 모든 정보를 내 데이터베이스에 적절하게 가져 오기 위해 한 번 실행됩니다. 관심있는 사람들을 위해, 나는 단어뿐만 아니라 각 단어의 유일한 ID를 보유하고있는 데이터베이스 'synonym_index'를 가지고있다. 그런 다음 'word_id'열과 'synomym_id'열을 포함하는 'synonym_listing'테이블 각각은 synonym_index에 대한 외래 키입니다. 각 word_id에는 synonym_id가 여러 개있을 수 있습니다.
귀하의 도움에 감사드립니다.
완벽! 내가 뭘 찾고 있었는지. 변수 이름을 제외하고 모든 것이 제대로 작동하도록 변경해야한다는 귀하의 제안에 반하는 것입니다. 필자의 원본보다 훨씬 나은 해결책이며, $ partofSpeech 변수를 포함하면 많은 도움이됩니다. –