2010-07-12 3 views
0

안녕하십니까 성 및/또는 이름 및/또는 전화 번호로 고객을 검색 할 수있는 검색 창을 만들려고합니다. 내가 청구서를 검색하고 내가 밥을 검색하지 않을 경우 때 MySQL 전체 텍스트 검색 (PHP)

SELECT * 
    FROM customer 
WHERE Match(c_fname,c_lname,c_phone) Against('$keywords') 

내 질문

가 왜 작동합니까입니다 : 여기

내 SQL 쿼리입니까?

또 다른 질문은 필자가 John Smith를 검색하고 출력물이 Will Smith, Rob Smith, John Clinton 및 John Smith 인 경우, 필드의 우선 순위를 결정하는 방법입니다 (John Smith는 매우 유용합니다). 상단.

답변

3

MysQL 전체 텍스트 검색 엔진은 기본적으로 전체 텍스트 검색에서 3 자 이하의 단어를 제외합니다. MySQL Manual 가입일

:

최소 및 인덱싱 할 단어의 최대 길이는 ft_min_word_len 및 ft_max_word_len 시스템 변수에 의해 정의된다. (섹션 5.1.4, "서버 시스템 변수"참조) 기본 최소값은 문자입니다. 기본 최대 값은 버전에 따라 다릅니다.

또한 표의 50 % 이상의 행에있는 단어는 공통으로 간주되므로 일치하지 않습니다. 시스템이 일반적인 단어로 정의하는 불용어도 사용하지 마십시오. MySQL을 다시 컴파일하지 않고 표준 전체 텍스트 검색에 대해이 50 % 임계 값을 늘리는 것은 불가능합니다. 대신이 50 % 행 문제가없는 부울 모드 전체 텍스트 검색을 사용하는 방법을 고려할 수 있습니다.

부울 모드 전체 텍스트 검색에 대한 자세한 내용은 MySQL 설명서의 Boolean Full-Text Searches 섹션을 참조하십시오.

MySql 웹 사이트의 list of default stopwords에 있습니다.

+0

검색 스미스가 작동하지 않습니다. 에테르 – Ross

+1

스미스가 테이블의 50 %보다 많은 행에 있다면, MySQL은이를 일반 단어로 취급하고 전체 텍스트 검색에서 무시합니다. –