#쿼리 확장 검색
SELECT * FROM books
WHERE MATCH(TITLE_NM) AGAINST ('자바' WITH QUERY EXPANSION);

쿼리 확장 검색을 하는 경우 [HY000][188] FTS query exceeds result cache limit 라는 문제가 생길 수 있다. MySQL에서 Full-Text Search 수행할  결과 캐시의 제한을 초과했다는 것을 알려줍니다검색 결과가 너무 많아서 결과 캐시에 저장할  없을 정도로 메모리가 부족한 상황. 이런경우 해결방법 

 

방법 1. and, or, not 연산자 사용하여 검색 범위 줄여주기

 

#and 연산자 사용
SELECT * FROM books
WHERE MATCH(TITLE_NM) AGAINST ('+자바 +프로그래밍' IN BOOLEAN MODE);
#or 연산자 사용
SELECT * FROM books
WHERE MATCH(TITLE_NM) AGAINST ('자바 | 파이썬' IN BOOLEAN MODE);
# not 연산자 사용
SELECT * FROM books
WHERE MATCH(TITLE_NM) AGAINST ('+자바 -JavaScript' IN BOOLEAN MODE);

 

  1. 검색 쿼리 수정: 검색 쿼리를 더 구체적으로 수정하여 검색 결과의 수를 줄여보세요. 예를 들어, 부울 검색을 사용하여 필요한 키워드만 포함하도록 조건을 추가하거나 제외할 수 있습니다.
  2. 결과 캐시 제한 늘리기: MySQL 설정에서 ft_result_cache_limit 값을 늘려 검색 결과 캐시의 제한을 증가시킬 수 있습니다. 이렇게 하면 더 많은 검색 결과를 캐시에 저장할 수 있습니다. 하지만 이 방법은 서버의 메모리 사용량이 증가하므로, 시스템의 메모리가 충분한지 확인해야 합니다.

 

방법2. Limit 절 추가하여 반환되는 행의 수 제한하기

 

#Limit 절로 반환하는 데이터 제한하기
SELECT * FROM books
WHERE MATCH(TITLE_NM) AGAINST ('자바' WITH QUERY EXPANSION)
LIMIT 10;

 

방법1이 더 안전한것 같다. 또한 쿼리 확장의 경우 인덱스를 사용했음에도 불구하고 검색 범위가 넓어짐과 동시에 검색에 대한 품질도 떨어지기 때문에 원하는 데이터에 대한 자료가 부족한데 찾아야하는 경우가 아니면 사용하지 않을것 같다. 

 

쿼리 확장 검색을 사용하는 이유

  1. 검색 결과의 관련성 향상: 사용자가 입력한 검색어와 관련된 추가 검색어를 자동으로 포함하여 검색 결과의 관련성을 높입니다.
  2. 검색 결과의 포괄성 향상: 검색 범위를 확장함으로써 더 많은 관련된 문서를 검색 결과에 포함시킵니다.

쿼리 확장 검색의 단점

쿼리 확장 검색의 단점 중 하나는 메모리 부하가 높을 수 있다는 점이다. 이는 검색 범위가 확장되면서 검색 대상이 되는 데이터의 양이 증가하기 때문이다. 따라서 쿼리 확장 검색을 사용할 때는 성능과 메모리 사용량에 대한 고려가 필요하다.

 

 

 

+ Recent posts