2009-07-29 4 views
2

도시에 대한 위치 검색이 website인데 학교, 대학,학과 상점 등 모든 가능한 카테고리에 대한 데이터를 수집하고 각 항목은 이름, 주소 및 전화 번호를 제외하고 다른 세부 사항을 가지고 있기 때문에 별도의 테이블.백엔드가 MYSQL 인 웹 사이트에 통합 검색

사람들이 정보를 찾을 수 있도록 검색을 웹 사이트에 통합해야하므로 같은 카테고리에 대한 카테고리와 관련 키워드와 해당 카테고리를 검색 할 때 많이 가져온 테이블을 저장하는 색인 ​​테이블을 만들었습니다 에 대한. 나중에 우리는 모든 테이블의 필드를 포함하는 또 다른 마스터 테이블을 한 곳으로 추가하여 이름과 주소를 검색하는 기능을 추가했습니다. 이제 내 의심의 여지가 우리의 데이터베이스는 MySQL과 PHP는 서버 측에 있기 때문에, 모든 것을, 다음

  • 응용 프로그램 설계가 부적절, 우리는 * 마스터의 경우 이름 "%의 $ 입력 %"와 같은 선택과 같은 쿼리를 작성했습니다입니다 시스템 설계를 개선 할 수있는 제안이 있습니까?
  • 사람들은 키워드를 분할하고 관련성에 따라 순위를 매기는 등의 추가 기능을 원하며 데이터베이스에서 검색을 실행하는 준비가 된 프레임 워크가 있습니까?
  • MYSQL에서 전체 텍스트 검색을 사용해 보았는데 나에게 효과적이었습니다. 그 정도면 충분합니까?

내가 틀렸다면 Lucene과 Google 맞춤 검색을 살펴보십시오. 기존 웹 페이지를 크롤링하고 색인을 직접 작성하여 색인을 작성하지 않습니까? 나는 검색을 적용해야하는 mysql 데이터베이스에 대한 테이블 모음을 가지고있다. 내가 가질 수있는 옵션은 무엇입니까?

답변

3

는 점을 해결하기 위해 :) 얼마나 멋진 대해 모두 격찬 :

  1. % 사용 입력 된 %는 입니다. 매우 좋지 않습니다.. 그러면 모든 쿼리가 전체 테이블에서 검색됩니다. 로드의 양 또는 원격으로 큰 데이터 세트에서 DB 서버가 잠길 수 있습니다.

  2. RDBMS만으로는이 문제에 대한 좋은 해결책이 아닙니다. 검색을위한 별도의 솔루션을 찾고 올바른 장소를 찾고 있습니다. RDBMS와 잘 통신 할 수있는 것이 좋습니다. RDBMS 안에서 실행되는 것은 당신이 필요로하는 것을하지 않을 것입니다.

  3. MySQL의 전체 텍스트 검색은 매우 기본적인 키워드 검색만으로 가능합니다. 유용성의 범위는 극히 제한되어 있습니다. 내장 검색을 활용하려면 예측 가능한 사용 모델이 필요합니다. 그것은 "검색"이라고 불리지 만, 대부분의 사람들이 생각하는 방식을 실제로 검색하지는 않습니다. Google과 Bing에서 기대하는 검색 결과의 품질과 비교하면 비교 대상이 아닙니다. 단어 "검색"의 의미에서, 그것은 메모장 대 Word와 같은 다른 것입니다. 둘 다 입력해야 할 것이지만 그게 전부입니다.

검색을 처리하기위한 별도의 시스템에 관한 한, Lucene은 매우 좋습니다. 그러나 Lucene은 당신이 근본적으로 작동하도록하고 싶습니다. 프로그래밍 방식으로 상호 작용하여 인덱서 블 문서를 삽입 할 수 있습니다. 마찬가지로 Google Appliance (Google Custom Search이 아님)에는 데이터베이스에서 직접 가져온 데이터와 같이 색인을 생성하려는 항목을 표시하는 직접 메타 피드가 제공 될 수 있습니다.

+0

어떻게 데이터베이스에서 lucene 작업을 할 수 있습니까? –

+0

@Anirudh는 API 설명서를 읽습니다. 데이터베이스를 주기적으로 실행하는 독립 실행 형 프로그램을 작성하고 Lucene 색인을 갱신하거나 응용 프로그램에서 새 레코드를 삽입하는 일부로 Lucene을 삽입해야합니다. –

2

스핑크스를 살펴 보자

당신이 그 10 + 만 행 테이블에 대한 전체 텍스트 검색을 구현 ​​부하와 유지, 관련 유지하려면 어떻게해야 : 사이트 당 http://www.sphinxsearch.com/

을 ? 스핑크스는 이런 종류의 수수께끼에 능숙합니다.

그것은 지금 레일 사회에서 많은 사람들이 꽤 인기, 그것은

관련 문제