"ab", "ef", "ab ef"(실제 : 수천 개 항목)가 포함 된 키워드 파일이 있다고 가정 해 봅시다. 내 각 키워드가실제 색인 --- perl에서 다중 일치
page 0
ab
gg
^L
page 1
ab ef
^L
page 2
Ab
ef
[another thousand pages, 2 million words, each ^L separated]
을 발생하는 어떤 페이지 내가 다시
ab => [ 0,1,2 ]
ef => [ 1,2 ]
ab ef => [ 1 ]
나는 매우 비효율적으로이 작업을 수행하는 방법을 알고 내가 싶어에서 조회 할 수 있습니다. 파일을 긴 문자열로 채 웁니다. 소문자. 그것을 페이지로 나눕니다. 각 페이지에 대해 (소문자로 표시된) 키워드 항목을 정규식으로 페이지에 표시되는지 확인하십시오. 그렇다면 내 키워드를 키로 포함하는 해쉬 끝에 페이지 번호를 추가하십시오. 어렵지는 않지만 고통스럽게 비효율적입니다. 내 알고리즘은 우아한 perl 접근 방식보다는 C 접근 방식에 가깝다.
아아, 더 나은 대안을 생각할 수 없습니다. 공백으로 분리 된 다중 단어 키워드의 가능성으로 인해이 부적절한 나쁜 논리를 만들 수 있기 때문에 기본 파일을 해시로 읽을 수 없습니다.
어쩌면 perl이 잘못된 도구입니까?!
유니크 (이상적으로는 본체에만 있음) 전에 lc를 수행해야합니다. – ysth
문제가 해결되지 않는다고 생각합니다. 파일을 구성 단어로 변환하고 각 단어에 페이지 번호를 지정합니다. –
문제가 해결되지 않는다고 생각합니다. 파일을 구성 단어로 변환하고 각 단어에 페이지 번호를 지정합니다. 공백이 포함될 수있는 구를 포함 할 수있는 단어 목록에서 시작하지 않습니다. 더 빨리 할 수 없습니까? my \ @page = split (/ f /, slurp ($ filename)); for my $ pageno (0 .. $ # 페이지) { my \ @wordsonpage = split/[\ n \ s] /, $ page [$ pageno]; {@ {words {$ _}}, \ pagero for \ @wordsonpage } # 이제는 페이지 번호가있는 단어의 해시가 있습니다 –