2012-10-15 2 views
2

부울 검색에 문제가 있습니다. 먼저 데이터베이스/테이블에 문제가 있다고 생각했지만 다음 열은 하나의 열과 샘플 값을 가진 샘플 테이블을 만들려고 시도했지만 결과는 같습니다. , 그것은 어떤 단어들에 대해서는 성공적으로 실행되고 어떤 아이디어에 대해서는 실패합니다. 성공적으로 실행BOOLEAN 검색 특정 단어에 대해 MySQL이 작동하지 않습니다.

조회 :

SELECT * FROM `temp` WHERE (match (txt) against ('develo*' IN BOOLEAN MODE)>0) 
SELECT * FROM `temp` WHERE (match (txt) against ('devel*' IN BOOLEAN MODE)>0) 
SELECT * FROM `temp` WHERE (match (txt) against ('senio*' IN BOOLEAN MODE)>0) 

을하지만 단어 '초'또는 '세 번째', 그것은 ---

SELECT * FROM `temp` WHERE (match (txt) against ('secon*' IN BOOLEAN MODE)>0) 
SELECT * FROM `temp` WHERE (match (txt) against ('third*' IN BOOLEAN MODE)>0) 
실패 다음되는 샘플 테이블에 대해 유사한 검색을 수행 할 때 및 값 ----- stopwords list로서

CREATE TABLE IF NOT EXISTS `temp` (
    `txt` varchar(30) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

-- 
-- Dumping data for table `temp` 
-- 

INSERT INTO `temp` (`txt`) VALUES 
('developer'), 
('Developer'), 
('Developer senior'), 
('senior developer'), 
('second job'), 
('job second'), 
('third'), 
('third job'), 
('job third'); 

답변

2

는, WO BOOLEAN MODE 매치에서인가 rds secondthird은 엔진에서 무시됩니다. here을 설명

당신은 당신의 자신과 기본 불용어 목록을 재정의 할 수

기본 스톱 워드리스트를 무시하려면 ft_stopword_file 시스템 변수를 설정하십시오. [...] 변수 값은 스톱 워드 목록이 포함 된 파일의 경로 이름이어야하며 스톱 워드 필터링을 비활성화하는 빈 문자열이어야합니다. 절대 경로 이름이 지정되어 다른 디렉토리를 지정하지 않으면 서버는 데이터 디렉토리에서 파일을 찾습니다. 이 변수의 값 또는 중지 단어 파일의 내용을 변경 한 후 서버를 다시 시작하고 FULLTEXT 인덱스를 다시 작성하십시오.

+0

는 후속하려면 다음과 같은 "일부"또는 "다음", 중지 단어이고 나는 그 목록에 대한 링크를 준 검색 string._ –

+0

@BradChristie에 존재하는 경우 일치하지 않는 그래서 인용에 대한 결정 등 _Common 단어 여기에. 물론 당신 말이 맞습니다. 불용 단어 목록은 일치시키기 위해 '너무 흔한'단어로 간주됩니다. – raina77ow

+0

감사합니다. 그러나 이것은 확실하게 도움이됩니다. 내 데이터에 용어 또는 단어 'td'가 있고 검색과 같이 따옴표를 사용하여 검색하면 'td'데이터 : '이 문제의 원인이 무엇인지 알 수 있습니다. 이것은 샘플 td 데이터입니다. '.. 결과를 가져 오지 않습니다. –

관련 문제