FULLTEXT 을 사용한 이유
row1 | [java,linux,database,ajax,r,sql,reactjs] (순서없음)
row2 | [java,javascript,django,c#,c++,database,ajax,r,sql,reactjs] (순서없음)
row3 | [c] (순서없음)
row4 | [c++] (순서없음)
검색어 [java , c , c++] ( 순서 없음 , 개수 정해지지 않음 , list로 vue에서 보냄 )이게 모두 포함된 row를 모두 찾기
검색어가 몇개가 될지 모르는 상황에서 검색어를 ,(콤마)로 구분하여 하나씩 for문을 돌리는 것 보다 다른 방법을 찾아야 겠다고 생각함.
검색의 조건이 텍스트 포함 여부만 있는 것이 아니라
기간 검색 , 여러 칼럼에 대한 텍스트 검색이 함께 있어서 시간을 줄일 필요가 있었음..
1. 데이터 베이스 수정 -> index 생김
ALTER TABLE 프로젝트명 ADD FULLTEXT(컬럼명);
-
인덱스 안주면 에러남
Error Code: 1191. Can't find FULLTEXT index matching the column list 0.000 sec
2. 테이블형식은 MyISAM 이어야 한다는데
나는 그대로 InnoDB로 둬도 잘 된다. ( + charset은 utf8 )
3. 다행히 검색어에 한글이 없는데 한글이 있으면 다른 설정이 필요한 것 같다.
4. 특수문자는 검색되지 않는다. / 검색어가 3자이상이어야..검색이 되는 것 같다.
-> 데이터베이스에 검색에 필요한 컬럼을 저장할 때 특수문자를 치환해서 저장하고 (c++ -> cplusplus )
검색시에 특수문자를 치환해서 검색한다. (c++ -> cplusplus)
검색결과를 원래 데이터를 치환해서 return한다. (cplusplus -> c++)
if( project.getProject_dev_setting() != null || project.getProject_dev_setting() != "" ) { |
'차근차근 > Spring' 카테고리의 다른 글
ibatis (0) | 2021.12.06 |
---|---|
Missing 'tools.jar' (0) | 2020.12.09 |
java.lang.IllegalStateException: Can't stop StopWatch: it's not running (0) | 2016.10.20 |
naver api 도로명 주소로 위도.경도 얻기 (0) | 2016.09.30 |
sendmail test - htmlemail ( 1 ) (0) | 2016.04.22 |