2009-03-31 3 views
0

내 사이트에는 모두 자신의 관련 페이지가있는 사람, 장소 및 주제의 이름이있는 많은 동적 통계가 있습니다. 나는 '단어'와 '링크'라는 MySQL 데이터베이스에 설정된 데이터를 기반으로 이들 각각을 페이지에 자동으로 연결하려고합니다.페이지 목록 내의 키워드를 자동으로 단어 목록에 연결합니다.

잠재적으로 15-20,000 개의 키워드와 링크가 20-50 회 연속적으로 자동 연결되는 효율적인 방법은 무엇입니까? MySQL과 PHP를 사용하고 있습니다. 아마도 Snowball에 대한

Here's a similar query for C++

답변

1

일반적으로 가능한 한 자주 링크를 검색하지 않으려 고합니다. 특별히 효율적인 방법이 없기 때문입니다. 사이트에 어떤 종류의 데이터가 있는지 지정하지 않았지만 위키 또는 블로그와 같은 것으로 가정합니다. 위키에서 할 수있는 것처럼 이런 종류의 기능에 대해 이야기 할 것이지만 비슷한 접근 방식이 무엇이든 작용할 것입니다.

위키를 사용하면 페이지가 변경되거나 처음 제출되었을 때만 링크 검색을 수행하려고합니다. 링크를 처리해야하는 두 가지 다른 방법이 있습니다. 먼저 페이지를 만들거나 편집 할 때 해당 페이지의 텍스트를 검색하여 링크가 어떤 것인지 결정해야합니다. 둘째, 페이지를 만들거나 이름을 변경하거나 삭제할 때마다이 페이지를 검색하는 것 외에도 만들기 위해 다른 페이지를 모두 검색하여 필요에 따라 링크를 추가/업데이트/제거해야합니다. 이러한 링크를 저장하는 방법에는 몇 가지 옵션이 있습니다.

하나의 옵션은 데이터베이스에있는 모든 페이지의 텍스트에 대해 두 개의 "버전"을 유지하는 것입니다. 하나의 버전은 원래의 "마크 업"버전이며 실제로 입력 한 버전이며 페이지 편집을 선택하면 표시됩니다. 두 번째 버전은 파싱/처리 된 "디스플레이"버전입니다. 이것은 일반 시청자에게 페이지를 표시하는 데 사용되는 데이터입니다.

예를 들어 굵게 표시를위한 위키 마크 업이 **이고 "마크 업 버전"이 **bold text**이고 "디스플레이 버전"이 <strong>bold text</strong>입니다. 이렇게하면 모든 페이지보기에서 마크 업을 처리 할 필요가 없습니다.

이 방법은 제출해야 할 텍스트를 검색하여 링크해야하는 단어를 찾아서 해당 링크를 "표시 버전"에 넣음으로써 페이지 링크에 적용됩니다. 예를 들어, 페이지가 제출되면 페이지 텍스트의 모든 단어를 단계별로 실행하고 "링크 단어"목록과 비교합니다 (이 목록을 캐시했는지, 데이터베이스 쿼리를 수행하고 싶지는 않은지 확인하십시오 모든 단어에 대해). 잠재적 링크 단어를 키로 해시에 저장하면 상당히 효율적으로 만들 수 있습니다. 테스트 단어가 "링크 단어"목록에있는 경우 "표시 버전"텍스트에 단어를 복사 할 때 관련 페이지에 대한 링크를 단어 주위에 놓습니다. 그것이 아니라면 "마크 업 버전"과 똑같이 단어를 넣으면됩니다.

구현 방법에 대한 몇 가지 다른 옵션이 있지만 매우 간단합니다. 지금 당장은 그만 하겠지만, 다른 옵션을 설명하고 싶다면 의견에 대해 알려주세요. 편집 해 드리겠습니다.

+0

좋은 옵션과 같은 소리는 내가 가진 다른 것들에 관심이 있습니다. csv 키워드/링크가 있다면 어떻게 "해시"로 만들 수 있습니까? 필자의 주요 관심사는 원래 데이터를 수정하는 것이 아니었지만 대체 버전을 만드는 것이 효과가있을 수 있습니다. –

0
+0

단어 쌍 또는 유사성을 가지고 있기 때문에 - 나는 이미 단어 목록이 정의되어 있고 텍스트 내에서 각 단어의 출현을 찾아야합니다. –

관련 문제