2014-02-28 5 views
1

MyISAM 테이블을 검색 할 때 자연어 모드의 MySQL 전체 텍스트 검색은 행의 50 % 이상에 나타나는 단어를 무시합니다. 이 문제를 방지 할 수있는 방법이 있습니까? 인기있는 단어를 무시하는 대신 포함시키고 싶습니다.적어도 50 %의 행에 나타나는 단어를 무시하고 MySQL 전체 텍스트 자연어 검색 금지

예를 들어 나는 90 %가 티셔츠로 분류 된 MySQL 항목 테이블을 가지고 있습니다. 고객이 전체 텍스트 색인에서 "티셔츠"단어를 무시하지 않고 "티셔츠"를 검색 할 수 있기를 바랍니다.

내가 지금까지 생각해 낸 유일한 해결책은 자연어 검색보다는 부울 모드 검색을 사용하는 것입니다. 그러나 부울 모드 검색이 반환하는 점수는 자연어 검색에서 반환되는 점수만큼 다양하지 않거나 의미가없는 것으로 보입니다.

사이드 노트 : MySQL 5.6 이상에서는 InnoDB 테이블의 자연어 검색이 행의 50 % 이상에 나타나는 단어를 무시하지 않습니다. 그러나, 내 웹 서버에서 InnoDB 테이블에 대한 전문 검색을 제공하지 않는 MySQL 5.5를 계속 사용하고 있으므로 MyISAM 형식으로 테이블을 유지해야합니다.

감사합니다.

답변

0

몇 년 후, 나는 MySQL의 5.7에 대한 설명서에서 답을 발견했다 :의 MyISAM 검색 인덱스를 들어

는 자연 언어 검색에 대한 50 %의 임계 값은 선택한 특정 가중치 방식에 의해 결정된다. 이에 줄

#define GWS_IN_USE GWS_PROB 

변경 : 그것을 사용하지 않으려면, 저장 /의 MyISAM/ftdefs.h에 다음 줄을 찾습니다

#define GWS_IN_USE GWS_FREQ 

그런 다음 MySQL의 컴파일. 이 경우 색인을 다시 작성할 필요가 없습니다.