테이블을 보유하고 있으며 (prenom, nom) 필드에 전체 텍스트 인덱스를 결합하여 적용했습니다. 다음은 해당 테이블의 데이터입니다.Fulltext 검색이 제대로 작동하지 않습니다.
persID prenom nom (pers table)
--------------------------------
116 te te
117 te test test te
지금, 나는 MATCH 및 반대 를 사용하여 레코드 위에 가져 오기 위해 노력했다. 아래는 나의 질문입니다.
SELECT `Pers`.`persID`, Pers.prenom, Pers.nom FROM `bdrplus`.`pers` AS `Pers` LEFT JOIN `bdrplus`.`pers_detail` AS `PersDetail` ON (`PersDetail`.`persID` = `Pers`.`persID`) WHERE `Pers`.`etat` =1 AND `Pers`.`persID` !=55 AND MATCH(`Pers`.`prenom`, `Pers`.`nom`) AGAINST('te*' IN BOOLEAN MODE) Result ------------------------ persID prenom nom 117 te test test te
이제 I MySQL을 LIKE (% .. %) 연산자를 사용하여 시도. 아래는 제가 시도한 쿼리입니다. 나는 전체 텍스트 인덱스 쿼리 조작을 상대로
MATCH를 사용하여 두 기록을 못하고있는 이유 SELECT `Pers`.`persID`
FROM `bdrplus`.`pers` AS `Pers`
LEFT JOIN `bdrplus`.`pers_detail` AS `PersDetail`
ON (`PersDetail`.`persID` = `Pers`.`persID`)
WHERE `Pers`.`etat` =1
AND `Pers`.`persID` !=55
AND (Pers.prenom LIKE 'te%' OR Pers.nom LIKE 'te%')
Result
-----------------------
persID prenom nom (pers table)
116 te te
117 te test test te
이해가 안 돼요?
하이로 MySQL 터미널에서 뭔가 수리에게 표를 할 수있다, 나는 위의 해결책 시도하지만 여전히 – Jimit
를 작동하지 않는 당신의 초'ft_min_word_len', 당신은 변경 후 mysql을 다시 시작 않았다 무엇입니까? 또한 변경 후 색인을 삭제하고 다시 작성해야합니다. 또는 테이블을 수리해야합니다. 또한 mysql 전체 텍스트 검색에는 정지 단어 목록이 있습니다. http://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html –
Windows를 사용하고 있으므로 my.ini를 체크인했습니다. ft_min_word_len을 사용할 수 없습니다. 나는 그것을 추가하고 그것을 2로 지정한 다음 mysql을 다시 시작하고 전체 텍스트 인덱스를 다시 색인화한다. – Jimit