2008-08-29 6 views
54

웹 사이트 검색 기능을 구현하고 싶습니다 (SO와 유사하다고 가정). 나는 그런 물건에 대한 구글 검색을 사용하고 싶지 않다.웹 사이트에서 검색 기능을 구현하려면 어떻게해야합니까?

내 질문은 :

어떻게 구현하나요? 사용자가 자신의 쿼리를 제공 할 때 응용 프로그램에서

  1. 검색 모든 데이터베이스 :

    내가 알고 있는데 두 가지 방법이 있습니다.

  2. 내가 가지고있는 모든 데이터에 대해 색인을 생성하고 거기에 다른 곳에서 쿼리를 저장합니다 (Google에서와 같이).

누구에게 어떤 방법으로 말해 줄 수 있습니까? 장단점은 무엇입니까?

더 나은 방법이 있습니까?

답변

33

사용 루씬,
http://lucene.apache.org/java/docs/

아파치 루씬 자바로 작성 고성능, 완전한 기능을 갖춘 텍스트 검색 엔진 라이브러리입니다. 전체 텍스트 검색이 필요한 거의 모든 응용 프로그램, 특히 교차 플랫폼에 적합한 기술입니다.

Java 및 .net에서 사용할 수 있습니다. 그것은 또한 젠드 프레임 워크 모듈의 형태로 PHP에서 사용할 수 있습니다.

Lucene은 원하는 항목 (색인 된 항목 검색)을 수행하기 때문에 lucene 색인을 추적해야하지만 성능면에서 데이터베이스 검색보다 훨씬 좋습니다. BTW, SO 검색은 lucene에 의해 제공됩니다. : D

+0

Lucene을 고려하고 있다면 Solr 프로젝트를 살펴 봐야합니다. 그것을 Lucene으로 서비스라고 생각하십시오. – sclarson

4

xapianomega 프런트 엔드를보고 싶을 수 있습니다. 기본적으로 검색 기능을 구축 할 수있는 툴킷입니다.

1

가장 좋은 방법은 페이지를 구성하는 방법에 따라 달라집니다.

스택 오버플로 페이지가 상상할 수있는 것처럼 여러 레코드로 자주 구성되는 경우 인덱싱 방식은 데이터베이스에서 페이지를 효과적으로 재구성하는 데 많은 노력을 기울이지 않는 한 더 나은 결과를 제공 할 수 있습니다 측면.

인덱싱 방식의 단점은 돌아서는 시간입니다. Google의 사이트 맵과 같은 해결 방법이 있지만 올바른 길을 찾는 것도 복잡합니다.

데이터베이스 경로를 사용하는 경우 최신 검색 엔진 시스템이 처리 할 링크 데이터가 있으면 더 잘 작동하므로 데이터베이스의 '페이지'간의 연결을 이해할 수있는 시스템을 찾는 것이 긍정적 인 효과를 가져옵니다. .

0

이 질문에 다소 직각이지만 RESTful 검색 아이디어를 적극 권장합니다. 즉, 수행 된 적이없는 검색을 수행하기 위해 웹 사이트는/searching /에 대한 쿼리를 게시합니다. 검색을 다시 실행하려면 웹 사이트를 검색/검색/{일부 ID}

예 : here과 관련하여 찾을 수있는 몇 가지 좋은 문서가 있습니다.

(즉,이 시기상조 일 수있다, 따라서 최적화이며, 비록 내가 색인 가능을 좋아했다.)

-1

하면 응용 프로그램이 자바 EE 스택을 사용하는 경우 당신은 당신이 유지 Compass Framework을 사용할 수 있습니다 Hibernate를 사용하는 데이터베이스의 검색 가능한 색인 Compass Framework는 Lucene을 사용합니다.

유일한 단서는 검색 색인을 복제 할 수 없다는 것입니다. 따라서 클러스터 된 데이터베이스를 사용하여 인덱스 테이블을 보관하거나 Compass Framework 2.x에 추가 된 새로운 그리드 기반 인덱스 저장 메커니즘을 사용해야합니다.

1

Microsoft plattform을 사용하는 경우 인덱싱 서비스를 사용할 수 있습니다. 이는 IIS 웹 사이트와 매우 쉽게 통합됩니다.

전체 텍스트 검색, 순위 지정, exlcude와 같은 기본 기능을 모두 가지고 있으며 특정 파일 형식을 포함하고 HTML 페이지의 메타 태그를 통해 자신의 메타 정보를 추가 할 수 있습니다.

Google을 사용하면 톤을 찾을 수 있습니다!

30

귀하의 웹 사이트가 얼마나 포괄적이고 자신이 원하는지에 따라 다릅니다.

것은 당신이 사용자 정의 검색을 추가 구글이 일을 할 수 있도록 더 가능성없이 A A 작은 웹 사이트를 실행하는 경우 (어쩌면 sitemap를 추가)하고 google custom search를 사용합니다.

중간 사이트과 SQL 엔진을 실행하는 경우 SQL 엔진의 검색 기능을 사용하십시오.

당신이 당신의 응용 프로그램에서 추상적 검색하려는 경우 J2EE 또는 닷넷 사용 Lucene, 큰, 강력한 검색 엔진이나 닷넷 복제 lucene.Net

같은 일부 무거운 소프트웨어 스택을 실행하면 및 XML/HTTP 및 JSON API를 사용하여 언어에 중립적 인 방식으로 쿼리 할 수 ​​있도록하려면 solr을 살펴보십시오. Solr은 백그라운드에서 lucene을 실행하지만 멋진 웹 인터페이스를 추가합니다.

+3

나는 이것에 관해 질문이 있습니다. 인트라넷 사이트에 대한 Google 맞춤 검색을 구현할 수 있습니까? 이 경우 회사를 위험에 처하게합니까? 나는 내 자신의 논리를 쓰지 않을 것이다. – Richie

+0

Google 맞춤 검색이 죽었습니다. Microsoft는 Bing과 같은 대안을 가지고 있습니다. – demaniak

관련 문제