2008-10-10 4 views
1

제목과 간단한 설명이있는 웹 사이트에 검색 질의 결과를 표시하고 싶습니다. 짧은 설명은 searchterm을 보유하고있는 페이지의 작은 부분이어야합니다. 내가하고 싶은 일은 다음과 같습니다. 페이지에 1 개의 strip 태그 2 seachterm의 첫 번째 위치를 찾으십시오. 3 그 위치에서 시작하여 그 문장의 시작 부분 (있는 경우)을 찾습니다. 4 3 단계에서 발견 된 위치에서 시작하고 ... 나는 내가 첫 수도 또는 점을 발견 정규식을 필요가 있다고 생각 3 단계로 도움이 필요문자열의 시작 부분을 찾으십시오.

거기에서 즉 200 개 문자를 표시

답변

2

방법 나는

  1. 은 '<'로 시작하는 모든 것들에 걸쳐 건너 뛰기 ... 내가 페이지를 구문 분석, 그것이 할 것

  2. 당신이 발생할 "." 또는 [A-Z]가 다른 "."을 찾을 때까지 버퍼에 넣기 시작합니다.

  3. 버퍼링 된 문자열에 검색 키워드가 있으면 해당 문자열이! 그밖에. "."버퍼링을 시작하십시오. 당신은 조우하고 반복합니다.

편집 :

가 할 수있는 일, 페이지의 처음부터 문자의 X 번호를 시작하는 것입니다 : 제임스 쿠란가 지적한 바와 같이,이 전략을 heres 솔루션을 ... 어떤 경우에 실패 그래서 것 (태그 뒤)

다음 키워드 2 개를 버퍼링하여 검색하십시오. 당신이 그것을 찾을 때, 는 다음과 같이 수행 {X}를 ... {이전-2} {다음-2}

예 : 이 행성은있다 - 오히려 있었다 또는 -이이었다 문제, : 대부분의 사람들은 그 시간 동안 거의 불행했습니다. 이 문제에 대한 많은 해결책이 제안되었지만, 대부분은 작은 초록색 종이의 움직임에 크게 관심이있었습니다. 그 이유는 전체적으로 불만 인 작은 초록색 종이가 아니기 때문에 이상했습니다. 오히려 또는 한 - -이 문제에 대한제안 ... 많은 솔루션을했다 문제가 ...

5

이 행성이있다 :

검색 키워드 :

결과 "제안" 심지어 그것은 궁극적으로 실패 할 것입니다. "우리는 스미스 박사의 사무실로 갔다"라는 문장이 주어지면 검색 용어가 "사무실"인 경우 거의 모든 기준을 사용하면 "스미스의 사무실"을 문장으로 사용할 수 있습니다.

+0

전략에 약간의 변경 사항을 게시했습니다. 해당 버그를 볼 수 있습니까? – Mostlyharmless

1

3 단계 : 역방향으로 검색하려는 위치에서 끝나는 부분 문자열을 반대로 바꾸려면 첫 번째 '.'문자의 위치를 ​​가져옵니다. 검색 문자열의 위치에서 값을 추출합니다.

$offset = stripos(strrev(substr($string, $searchlocation)), '.'); 
$startloc = $searchlocation - $offset; 
$finalstring = substr($string, $startloc, 200); 

1이 될 수도 있지만 그럴 수 있다고 생각합니다. 그것을하는 더 짧은 길이 있어야하는 것처럼 보입니다.

+0

제임스 카란 (James Curran)의 대답도 여기에 적용됩니다. 스미스 박사의 사무실에서는 여전히 실패 할 것입니다. – acrosman

1

나는 문장을 찾으려고 노력하는 대신 단어로 필요한 검색 용어 주변의 컨텍스트 양을 생각합니다. 그런 다음이 단어 수의 일부분 (또는 처음까지)으로 이동하여 나머지 단어 수를 전달하여 나머지 문맥을 선택하십시오. 이 방법으로, 전체 코퍼스를 공백으로 분할하고, 용어의 첫 번째 항목을 찾은 다음 (어쩌면 하위 항목을 찾아서 문장 부호를 설명하기 위해 퍼지 매치를 사용하여) 위의 알고리즘을 적용하면됩니다. 처음 선택되지 않은 용어가 문장 부호 등으로 끝나지 않는 경우에도 타원 소개에 대해 창의적 일 수 있습니다.

관련 문제