하이픈이있는 검색 문자열에 문제가 있거나 오히려 이해 문제가 있습니다.MySQL에서 부 울린 모드의 예상치 못한 동작 - 인용 된 하이픈이있는 문자열이있는 쿼리
내 테이블에 '회사'열이있는 테이블이 있습니다. 해당 열에있는 항목의
하나는 : A-Z 전기 (실제 쿼리가 훨씬 더 복잡하지만) 다음 예는 많이 단순화
-하지만 효과는 여전히 동일합니다.
나는 다음 검색을 수행 할 때, 나는 위에서 언급 한 회사와 행을하지 않는다 : 나는 다음 검색을 수행하면
SELECT i.*
FROM my_table i
WHERE MATCH (i.company) AGAINST ('+\"A-Z\" +Electro*' IN BOOLEAN MODE)
GROUP BY i.uid ORDER BY i.company ASC LIMIT 0, 40;
는, 위에서 언급 한 회사와 행을 얻을 수 (주의 사항 만 변경
SELECT i.*
FROM my_table i
WHERE MATCH (i.company) AGAINST ('\"A-Z\" +Electro*' IN BOOLEAN MODE)
GROUP BY i.uid ORDER BY i.company ASC LIMIT 0, 40;
: 나는 완전히 연산자를 제거하면 나는 또한, 행을 얻을
SELECT i.*
FROM my_table i
WHERE MATCH (i.company) AGAINST ('-\"A-Z\" +Electro*' IN BOOLEAN MODE)
GROUP BY i.uid ORDER BY i.company ASC LIMIT 0, 40;
: A +에 "AZ \"을 \ 전 -
아무도 내게이 동작을 설명 할 수 있습니까? 내가 기대하기 때문에 +로 검색 할 때, 나는
편집
... 너무 결과를 얻어야한다 난 그냥 myisam_ftdump와 테이블 인덱스를 확인했습니다. 두 문자 - 단어
14f2e8 0.7908264 같은 항목이 깨어 있기 때문에 제대로 색인
3a164 0.8613265 DV
항목도있다 :
de340 0.6801047 AZ 나는이 AZ에 대한 항목해야 가정
가 - 검색에서이 항목을 찾아야합니다. 그렇지 않아야합니까?
@ "Jeremy Smith"죄송합니다. ft_min_word_len이 3으로 설정되었습니다. – Stefan
색인을 3으로 설정 한 후 다시 작성 했습니까? –
설정은 최근에 변경된 사항이 아닙니다.설정은 거의 1 년 이래로 2 (그리고 ft_stopword_file = '')로 설정되어 있습니다. 그 후 인덱스가 여러 번 재 빌드되고 MySQL 서버가 여러 번 재시작되었습니다. 위의 내 게시물을 업데이트했습니다 => 인덱스는 괜찮지 만 검색은 여전히 일치하지 않습니다 ... 다른 아이디어? – Stefan