2012-04-10 5 views
-1

검색 엔진을 위해 다른 테이블에서 검색 할 때 나에게 어떤 제안을 하시겠습니까?다른 테이블에서 검색 엔진 만들기

각 테이블은 다른 테이블과 열이 다르며 행 수가 다릅니다.

+0

당신이 [SOLR] (http://lucene.apache.org/solr/) 시도? 요구 사항에 따라 좋은 선택 일 수 있습니다. – Anirudh

답변

0

다른 테이블의 내용을 단일 테이블로 가져 오기 위해 해당 테이블에서 트리거를 생성하십시오. 해당 테이블에서 전체 텍스트 검색 인덱싱을 적용하십시오.

0

열 이름과 테이블 이름을 동적으로 입력하는 함수를 만듭니다. 검색 목적을 위해 어떤 열이 어떤 테이블과 관련되어 있는지를 알아야하며,이 2 개의 매개 변수를 항상 1) table_name 2) column_names 배열로 전달하십시오. 이 매개 변수가 적합한 조건으로 SQL 쿼리를 만들고 쿼리를 동적으로 개발합니다. 그런 다음 쿼리는 결과를 반환합니다.

0

여기서는 FULL-TEXT 색인 메커니즘을 고려했는지 확인하십시오. FULL-TEXT 색인은 MyISAM 테이블 ENGINE 유형으로 지원됩니다.

Full-text 검색은 MATCH() ... AGAINST 구문을 사용하여 수행됩니다. MATCH()는 검색 할 열의 이름을 지정하는 쉼표로 구분 된 목록을 사용합니다. AGAINST는 검색 할 문자열과 수행 할 검색 유형을 나타내는 선택적인 한정자를 사용합니다. 검색 문자열은 변수 또는 열 이름이 아닌 리터럴 문자열이어야합니다.

  • 자연 언어 검색 자연 인간의 언어 (무료 텍스트 문구)의 문구로 검색 문자열을 해석 : 전체 텍스트 검색의 세 가지 유형이 있습니다. 특별한 연산자는 없습니다. 정지 단어 목록이 적용됩니다. 또한 행의 50 % 이상에있는 인 단어는 공통적 인 것으로 간주되어 과 일치하지 않습니다.

    IN NATURAL LANGUAGE MODE 수정자가 주어 지거나 수정자가 주어지지 않은 경우 전체 텍스트 검색이 자연어 검색입니다.

  • 부울 검색은 특수 쿼리 언어의 규칙을 사용하여 검색 문자열을 해석합니다. 문자열에는 검색 할 단어가 들어 있습니다. 일치하는 행에 단어가 있어야하거나 일치하지 않아야하거나 항상보다 가중치가 높거나 낮아야하는 요구 사항을 지정하는 연산자를 포함 할 수도 있습니다. "some"또는 "then"과 같은 일반적인 단어는 스톱 워드이며 문자열에 검색 결과가 있으면 일치하지 않습니다. IN BOOLEAN MODE 수정자는 부울 검색을 지정합니다. 에 대한 자세한 내용은 12.9.2 절. "부울 전체 텍스트 검색"을 참조하십시오.

  • 검색어 확장 검색은 자연어 검색을 수정 한 것입니다. 검색 문자열은 자연 언어를 수행하는 데 사용됩니다 검색. 그런 다음 검색 에 의해 리턴 된 가장 관련이있는 행의 단어가 검색 문자열에 추가되고 검색이 다시 완료됩니다. 쿼리는 두 번째 검색에서 행을 반환합니다.

자세한 내용은이를 참조 해주십시오 :

http://devzone.zend.com/26/using-mysql-full-text-searching/

http://www.iamcal.com/publish/articles/php/search/

관련 문제