문제

저는 항상 웹 검색 엔진 개발에 관심이 있었습니다.어디에서 시작하는 것이 좋은가요?Lucene에 대해 들어본 적은 있지만 Java 전문가는 아닙니다.다른 좋은 리소스나 오픈 소스 프로젝트가 있나요?

나는 그것이 엄청난 사업이라는 것을 이해하지만 그것은 매력의 일부입니다.나는 차세대 Google을 만들려는 것이 아니라 내가 관심을 가질 수 있는 사이트의 하위 집합을 검색하는 데 사용할 수 있는 것뿐입니다.

도움이 되었습니까?

해결책

검색 엔진에는 여러 부분이 있습니다.광범위하게 말하면, 절망적으로 일반적인 방식으로(여러분, 자유롭게 편집하세요 더 나은 설명, 링크 등을 추가할 수 있다고 생각되는 경우):

  1. 크롤러.이는 웹을 통과하여 페이지를 잡고 그에 대한 정보를 중앙 데이터 저장소에 저장하는 부분입니다.텍스트 자체 외에도 액세스한 시간 등의 정보도 필요합니다.크롤러는 얼마나 자주 특정 도메인에 접근하는지 알고 robots.txt 규칙을 준수할 만큼 똑똑해야 합니다.

  2. 파서.이는 크롤러가 가져온 데이터를 읽고, 구문 분석하고, 필요한 메타데이터를 저장하고, 정크를 버리고, 다음에 가져올 항목에 대해 크롤러에 제안할 수도 있습니다.

  3. 인덱서.파서가 구문 분석한 내용을 읽고 웹페이지에서 찾은 용어에 대한 역색인을 생성합니다.원하는 만큼 스마트할 수 있습니다. NLP 기술을 적용하여 개념 색인을 만들고, 항목을 상호 연결하고, 동의어를 입력하는 등의 작업을 수행합니다.

  4. 순위 엔진."apple"과 일치하는 수천 개의 URL이 주어지면 어떤 결과가 가장 좋은지 어떻게 결정합니까?색인은 해당 정보를 제공하지 않습니다.텍스트, 연결 구조 및 보고 싶은 기타 부분을 분석하고 점수를 만들어야 합니다.이는 완전히 즉시 수행될 수도 있고(정말 어렵습니다) 사전 계산된 "전문가" 개념을 기반으로 수행될 수도 있습니다(PageRank 등 참조).

  5. 프런트엔드.사용자 쿼리를 받고, 중앙 엔진을 작동하고, 응답해야 하는 것이 있습니다.이는 결과 캐싱, 다른 소스의 결과 혼합 등에 대해 현명해야 합니다.그 자체의 문제가 있습니다.

내 조언 - 가장 관심 있는 것을 선택하고, Lucene이나 Xapian 또는 기타 오픈 소스 프로젝트를 다운로드하고, 위 작업 중 하나를 수행하는 비트를 꺼내서 교체해 보십시오.바라건대, 더 나은 것이 있기를 바랍니다 :-).

유용할 수 있는 일부 링크:"민첩한 웹 크롤러", 에스토니아의 논문(영문)스핑크스 검색 엔진, 색인 생성 및 검색 API입니다.대규모 DB용으로 설계되었지만 모듈식이며 개방형입니다."정보 검색, Manning et al.의 IR 관련 교과서.인덱스 구축 방법, 발생하는 다양한 문제, 크롤링에 대한 논의 등에 대한 좋은 개요입니다.무료 온라인 버전(현재)!

다른 팁

사피안 당신을 위한 또 다른 선택입니다.일부 Lucene 구현보다 확장성이 더 좋다고 들었습니다.

확인해 보세요 멍청이, Lucene을 만든 사람이 작성했습니다(더그 커팅).

가장 큰 부분은 사이트 색인 생성인 것 같습니다.인터넷을 샅샅이 뒤지고 내용을 파싱하는 봇을 만듭니다.

친구와 저는 Google과 다른 검색 엔진이 얼마나 놀라운 기능을 수행해야 하는지에 대해 이야기하고 있었습니다.0.5초 안에 수백만 개의 결과가 나오나요?미친.자주 검색되는 항목에 대한 검색 결과가 미리 설정되어 있지 않을까 싶습니다.

편집하다:이것 사이트가 좀 재미있어 보이네요.

Wikia의 오픈 소스 검색 엔진과 같은 기존 프로젝트부터 시작하겠습니다.

[위키아 검색 프로젝트가 종료된 것으로 알고 있습니다.하지만 기존 오픈 소스 프로젝트에 참여하는 것이 이 규모의 사업을 쉽게 진행하는 좋은 방법이라고 생각합니다.]

http://re.search.wikia.com/about/get_involved.html

정보 검색 이면의 이론과 검색 엔진 구현 이면의 기술적 세부 사항을 배우고 싶다면 이 책을 추천해 드립니다. 기가바이트 관리 작성자: Ian Witten, Alistair Moffat 및 Tim C.벨.(폭로:Alistair Moffat는 제 대학 지도교수였습니다.) 비록 지금은 조금 낡았지만(첫 번째 버전은 1994년에, 두 번째 버전은 1999년에 나왔습니다. 지금 기가바이트를 관리하는 데 무엇이 그렇게 어려운가요?) 기본 이론은 여전히 ​​타당하며 훌륭한 소개입니다. 인덱싱 및 검색 시스템에서 인덱싱과 압축 사용 모두에 적용됩니다.

저도 검색엔진에 관심이 많아요.저는 Apache Hadoop MapReduce와 Apache Lucene을 모두 추천했습니다.Hadoop Cluster를 사용하여 속도를 높이는 것이 가장 좋은 방법입니다.

Lucene 포트가 있습니다.Zend는 하나를 무료로 사용할 수 있습니다.이 빠른 튜토리얼을 살펴보십시오: http://devzone.zend.com/node/view/id/91

프로그래밍에는 별로 관심이 없지만 결과에는 더 관심이 있는 경우 약간 다른 접근 방식이 있습니다.그것을 사용하여 구축하는 것을 고려하십시오 Google 맞춤검색 엔진 API.

장점:

  • Google이 귀하를 위해 모든 어려운 작업을 수행합니다.
  • 사용자에게 친숙한 UI 및 동작
  • 몇 분 안에 작업을 완료하고 실행할 수 있습니다.
  • 다양한 사용자 정의 기능

단점:

  • 코드를 작성하지 않으므로 학습 기회가 없습니다.
  • 검색하려는 모든 내용은 공개되어 있어야 하며 이미 Google 색인에 있어야 합니다.
  • 귀하의 결과는 Google에 연결되어 있습니다
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top