Programing

웹 사이트에서 검색 기능을 어떻게 구현합니까?

crosscheck 2020. 11. 21. 15:40
반응형

웹 사이트에서 검색 기능을 어떻게 구현합니까?


웹 사이트에 대한 검색 기능을 구현하고 싶습니다 (SO와 유사하다고 가정). Google 검색을 사용하고 싶지 않습니다.

내 질문은 :

어떻게 구현합니까?

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

  1. 사용자가 쿼리를 제공하면 애플리케이션의 모든 데이터베이스를 검색합니다.
  2. 내가 가지고있는 모든 데이터의 색인을 생성하고 다른 곳에 저장하고 거기에서 쿼리합니다 (예 : Google이 수행하는 작업).

어느 길로 가야하는지 누구든지 말해 줄 수 있습니까? 장단점은 무엇입니까?

더 나은 방법이 있습니까?


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

Apache Lucene은 전적으로 Java로 작성된 고성능의 완전한 기능을 갖춘 텍스트 검색 엔진 라이브러리입니다. 전체 텍스트 검색이 필요한 거의 모든 응용 프로그램, 특히 크로스 플랫폼에 적합한 기술입니다.

Java 및 .net에서 사용할 수 있습니다. zend 프레임 워크 모듈의 형태로 PHP에서도 사용할 수 있습니다.

Lucene은 사용자가 원하는 것을 수행합니다 (검색된 항목의 색인화). lucene 인덱스를 추적해야하지만 성능 측면에서 데이터베이스 검색을 수행하는 것보다 훨씬 낫습니다. BTW, SO 검색은 lucene에 의해 제공됩니다. :디


그것은 당신의 웹 사이트가 얼마나 포괄적이고 얼마나 당신이 스스로하고 싶은지에 달려 있습니다.

맞춤 검색을 추가 할 가능성이없는 소규모 웹 사이트운영하는 경우 Google에서 작업을 수행하고 ( 사이트 맵을 추가 할 수 있음 ) Google 맞춤 검색을 사용합니다 .

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

J2EE 또는 .Net과 같은 더 무거운 소프트웨어 스택 을 실행하는 경우 훌륭하고 강력한 검색 엔진 인 Lucene 또는 .Net 복제 lucene.Net을 사용합니다.

애플리케이션에서 검색추상화 하고 XML / HTTP 및 JSON API를 사용하여 언어 중립적 인 방식으로 쿼리 할 수 ​​있도록하려면 solr을 살펴보십시오 . Solr은 백그라운드에서 lucene을 실행하지만 멋진 웹 인터페이스를 추가합니다.


xapian오메가 프런트 엔드를 살펴볼 수 있습니다 . 본질적으로 검색 기능을 구축 할 수있는 툴킷입니다.


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

많은 다른 레코드로 자주 구성되는 경우 (스택 오버플로 페이지가 상상하는 것처럼) 인덱싱 접근 방식은 데이터베이스 쪽에서 페이지를 효과적으로 재구성하는 데 많은 작업을하지 않는 한 더 나은 결과를 제공 할 가능성이 높습니다.

인덱싱 방식의 단점은 처리 시간입니다. 해결 방법 (구글의 사이트 맵과 같은)이 있지만 제대로 작동하는 것도 복잡합니다.

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


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

전체 텍스트 검색, 순위 지정, 제외 및 특정 파일 유형과 같은 모든 기본 기능이 있으며 html 페이지의 메타 태그를 통해 자신의 메타 정보를 추가 할 수도 있습니다.

Google을 수행하면 많은 것을 찾을 수 있습니다!


이것은 귀하의 질문과 다소 직교하지만 RESTful 검색 아이디어를 적극 권장합니다. 즉, 한 번도 수행되지 않은 검색을 수행하기 위해 웹 사이트는 / searches /에 쿼리를 게시합니다. 검색을 다시 실행하기 위해 웹 사이트는 / searches / {some id}를 가져옵니다.

이에 관한 몇 가지 좋은 문서가 있습니다 (예 : 여기) .

(즉, 가능한 경우 인덱싱을 좋아하지만 최적화이기 때문에 시기상조 일 수 있습니다.)


애플리케이션이 Java EE 스택을 사용하고 Hibernate 를 사용하는 경우 Compass Framework를 사용 하여 데이터베이스의 검색 가능한 색인을 유지할 수 있습니다. Compass Framework는 내부적으로 Lucene사용합니다 .

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

참고 URL : https://stackoverflow.com/questions/34314/how-do-i-implement-search-functionality-in-a-website

반응형