2008-08-18 8 views
4

자동 링크는 페이지 내용에 인라인 된 wiki 링크가 페이지에 대한 하이퍼 링크 (존재하는 경우) 또는 생성 링크 (페이지가없는 경우)로 생성되는 프로세스입니다.위키 페이지 콘텐츠에서 자동 링크를 어떻게 처리해야합니까?

내가 사용하고있는 파서에서는이 두 단계 과정이 있습니다. 먼저 페이지 내용이 파싱되고 소스 태그의 wiki 페이지에 대한 모든 링크가 추출됩니다. 그런 다음 최종 HTML 마크 업이 생성되기 전에 기존 페이지 배열을 파서에 다시 공급합니다.

이 프로세스를 처리하는 가장 좋은 방법은 무엇입니까? 매번 페이지 제목 색인을 추출하지 않고 사이트의 모든 단일 페이지에 대한 캐시 된 목록을 유지해야하는 것처럼 보입니다. 또는 각 링크를 따로 따로 확인하여 그것이 존재하는지 확인하는 것이 더 낫습니다. 목록이 캐시되지 않은 경우 많은 데이터베이스 조회가 발생할 수 있습니다. 수천 페이지가있는 더 큰 위키 사이트에서도이 방법을 사용할 수 있습니까?

답변

1

내 자신의 위키에서 (캐싱없이) 모든 링크를 확인하지만 내 위키는 내부적으로 몇 명의 사람들 만 사용합니다. 이런 식으로 벤치마킹해야합니다.

1

내 자신의 위키 시스템에서 캐싱 시스템은 매우 간단합니다. 페이지가 업데이트되면 링크가 유효한지 확인하여 유효하지 않은 사이트에 올바른 형식/위치를 적용합니다. 캐시 된 페이지는 캐시 루트에 HTML 페이지로 저장됩니다.

페이지 업데이트 중에 '생성되지 않음'으로 표시된 페이지가 페이지를 보유하고있는 데이터베이스의 테이블에 삽입 된 다음 링크 된 페이지의 csv가 삽입됩니다.

누군가가 해당 페이지를 만들면 각 연결 페이지를 살펴보기 위해 스캔을 시작하고 올바른 링크 및 서식을 사용하여 연결 페이지를 다시 캐시합니다.

작성되지 않은 페이지를 강조 표시하지 않으려는 경우 페이지에 액세스하려고 할 때 페이지가 작성되었는지, 작성 페이지로 리디렉션되지 않았는지 확인하는 검사기 만 있으면됩니다. 그런 다음 다른 기사에서 평소대로 페이지에 링크 만하면됩니다.

0

제 아이디어는 SELECT title FROM articles과 같은 제목을 쿼리하고 각 위키 링크가 해당 문자열 배열에 있는지 확인하는 것입니다. 페이지에 링크하고있는 경우에는 작성 페이지로 링크합니다.

1

나는 이것을 한 번 시도하고 그것은 악몽이었다! 내 솔루션은 SQL 프로 시저에서 불쾌한 루프 였고 권장하지 않습니다.

나를 괴롭혔던 한 가지는 여러 단어로 된 문구에 사용할 링크를 결정하는 것이 었습니다. "스택 오버플로를 사용 중입니다"라는 텍스트가 있고 위키에 "스택", "오버플로"및 "스택 오버플로"라는 3 개의 페이지가 있다고 가정 해보십시오. 어떤 부분이 어디로 연결 되나요? 그것은 일어날 것이다! 내가 마크 다운을 통해 컨텐츠를 실행 한 후시나 (link text)로 만든 개인 프로젝트에서

0

, 나는 적절한 링크 (그리고 이것 저것 [[여기 내 링크]입니다] 같은) 위키 단어와 다른 것들을 대체 할 GSUB을 , 각 페이지가 존재하는지 확인하고 의존성에 따라 생성하거나보기 위해 링크합니다.

최고는 아니지만 캐싱/속도를 염두에두고이 앱을 제작하지 않았습니다. 저비용의 간단한 위키입니다.

속도가 더 중요하면 캐시에 저장할 수 있습니다. 예를 들어, sinatra는 Rack 캐싱으로 감쌀 수 있습니다.

0

자동 링크가 포함 된 오프라인 개인 위키 인 Juli을 (를) 개발 한 경험을 토대로 정적 HTML 접근 방식을 생성하면 문제가 해결 될 수 있습니다.

생각한대로 자동 링크 된 위키 페이지를 생성하는 데 시간이 오래 걸립니다. 그러나 정적 HTML 상황을 생성 할 때, 자동 링크 된 Wiki 페이지를 다시 생성하는 것은 wikipage가 새로 추가되거나 삭제 될 때 발생합니다 (즉, wikipage를 업데이트 할 때 발생하지 않습니다). 그리고 'regenerating'은 백그라운드에서 수행 될 수 있습니다. 오랜 시간이 걸리는 것은 중요하지 않습니다. 사용자는 생성 된 정적 HTML 만 볼 수 있습니다.