최근 웹사이트 최적화를 공부하느라 바빴는데 갑자기 관심이 생겨서 SE의 원리를 간략하게 공부했습니다. 이 글을 읽고 나면 검색 엔진의 메커니즘과 원리를 더 잘 이해해야만 SEO 담당자들에게 큰 이득이 될 것입니다. 더 나은 순위.
검색엔진이 해결해야 할 기술적 문제는 일반적으로 스파이더 프로그램 + 분류 및 색인화 + 어휘 + 정렬 알고리즘 요소 + 데이터베이스 색인화 및 최적화 + 데이터베이스 구조로 구분됩니다.
1. 거미. 현재로서는 C나 PHP로 스파이더를 구현할 수 있는 것으로 보인다. Baidu 스파이더의 대부분은 C로 만들어졌습니다. C는 다중 데이터베이스 연결 인터페이스도 지원할 수 있으며 C의 운영 효율성은 PHP보다 높으며 C는 하위 계층을 더 잘 제어할 수도 있습니다. C가 너무 좋은데, 그래도 PHP를 쓰고 싶어요. 시간을 더 아껴야 하고, 더 이상 C를 배울 수 없습니다. 앞으로 높은 효율성이 필요하다면 C를 사용해야 한다면 다시 C를 사용하세요. 데이터베이스는 변경되지 않고 그대로 유지될 수 있으며, MYSQL은 C에 연결될 수 있습니다. PHP에는 장점과 단점이 있습니다. 당신이 스파이더라면 큰 문제가 되지 않을 것입니다. 가장 큰 문제는 매우 느릴 수 있다는 것입니다. 웹페이지를 크롤링할 때 발생할 수 있는 문제는 크롤링 순서, 크롤링 실패 또는 시간 초과 여부를 기록하는 방법, 다음에 크롤링을 업데이트할 시기 등입니다. 검색 엔진 데이터베이스는 처음에는 URL이 없는 새로운 것이므로 많은 수의 URL을 추가해야 합니다. 여기에서 for 루프 문을 사용하여 영문자에 따라 자동으로 루프를 돌릴 수 있습니다. 물론, 웹사이트는 영어뿐만 아니라 수동으로만 입력할 수 있는 숫자도 제공합니다. 계속해서 루프를 잡게 되면 대부분 실패할 것으로 추정됩니다. 인코딩 유형이 utf-8인지 gb2312인지 확인하려면 캡처된 코드를 분석해야 합니다. 내 검색 엔진에서는 중국어 간체만 캡처하려고 합니다. 가져오기 시간이 초과되면 기록되고 약 10일 후에 다시 가져옵니다. 연속으로 3번 시간이 초과되면 데이터베이스에서 제거됩니다.
2. 인덱스 생성은 매우 어려운 문제입니다. Baidu와 Google은 자체 서버 팜을 사용하여 분산 서버를 구축할 수 있습니다. 서버가 그렇게 많지 않아요. 그래서 다른 접근 방식을 시도해보고 싶었습니다. 정적 페이지를 만듭니다. 바이두나 구글에서는 비교적 흔하지 않은 단어를 입력하는데 보통 0.1초밖에 걸리지 않는데, 0.2초 정도 걸릴 줄은 예전에는 몰랐다. 더욱이, 두 번째로 단어를 반복적으로 입력하는 데 필요한 쿼리 시간도 훨씬 적습니다. 이는 아마도 지수의 영향일 것이다. 색인이 메모리에 저장되어 있으면 읽기 속도는 매우 괜찮을 것입니다. 서버가 하나밖에 없는데, 거기에 공통 검색어 5만 개의 인덱스만 넣어도 좀 피곤할 것 같아요. 페이지는 최소 20K 이상이어야 하며, 50,000페이지는 20K*50=1G입니다. 이것은 50,000 단어의 첫 페이지에 불과합니다. 사용자가 쿼리를 위해 페이지를 넘기고 싶다면 메모리가 충분하지 않을 것입니다. 첫 번째 페이지만 메모리에 넣고 사용자가 페이지를 넘겨 쿼리하면 속도가 향상되지 않습니다. 그래서 나는 완전히 정적으로 갈 것입니다. 50,000 단어의 쿼리를 시뮬레이션한 다음 정적 페이지를 생성합니다. 모든 단어의 첫 번째 페이지는 메모리에 저장되고 다음 페이지는 하드 디스크에 저장됩니다. 페이지를 메모리에 넣을 수 있다면 이 문제는 해결되었을 것입니다.
3. 어휘. 한자는 수천 개가 있으며, 일반적으로 사용되는 한자는 최소 3,000개 이상입니다. 일반적으로 사용되는 단어는 20,000개로 구성되어 있는 것으로 추정됩니다. 이 동의어는 어떻게 추가해야 하나요? CSV 파일, 데이터베이스, 텍스트 파일 중 어떤 형식으로 저장해야 하나요? 이전에는 Kingsoft PowerWord의 동의어 파일을 찾아 직접 복사해 볼까 생각했지만 아직 성공하지 못했습니다.
4. 정렬에 영향을 미치는 모든 알고리즘은 테이블에 배치되어야 합니다. 그리고 웹사이트 자체의 요소인 고정 알고리즘과 사용자가 입력하는 단어나 시간대, 계절 등에 따라 변화하는 요소인 가변 알고리즘이 있습니다. 고정된 알고리즘을 테이블에 배치하고 각 웹사이트에 대한 총점을 계산합니다. 변경 알고리즘의 일부는 이전에 생성되었으며 일부는 사용자 입력 후에 계산됩니다.
5. 현재 데이터베이스 인덱싱에 대한 좋은 솔루션은 없습니다. 표현식 인덱스가 너무 많으면 속도에 영향을 미치므로 너무 많으면 안 됩니다.
6. 데이터베이스 구조. 이것은 매우 중요합니다. 웹사이트의 프런트 엔드 인터페이스가 나오기 전에 데이터베이스 구조가 마무리되어야 할 것으로 추정됩니다. 또한 알고리즘 요소를 추가하거나 쿼리문을 최적화하기 위해 필드를 변경하는 등 향후 업그레이드를 위한 인터페이스도 남겨두는 것이 필요합니다. 대략적인 구조는 이렇습니다. 1~3개의 테이블에는 웹사이트 정보가 저장됩니다. 첫 번째 필드는 자동으로 증가된 기본 키이고, 두 번째 필드는 웹 사이트의 홈페이지 주소이며, 순서대로 웹 사이트 도메인 이름 등록 시간, 수집 시간, 마지막 스냅샷 시간, 포함된 총 페이지 수, 페이지의 바이트 수입니다. 홈페이지, 도메인 이름 분류(com/cn/org/net/gov/edu), 총 백링크 수, 웹사이트 분류(1~10개 가능, 포털은 30개까지 확장 가능) 등
이 기사는 www.jianfeiyiqi.com에서 복제되었습니다. 링크와 함께 출처를 표시해 주세요.