[2020년 11월 15일 기술블로그에서 작성]

 

Nextcloud 앱을 사용하고 있던 중 파일 검색을 하는 데 검색에 실패했다,,,

분명 파일명에 있는 단어들을 검색한 것인데 검색 결과 없음이 나왔다.😳
파일명에 적힌 문자열 그대로 검색하지 않으면 원하는 파일은 검색되지 않는 것 같다.

만약 내가 '20201113 issue test image.jpg' 파일을 찾으려고 한다.

파일명 순서 그대로 'issue test'를 검색하면 원하는 결과가 나온다.
('20201113 issue', 'issue test image' 등... 도 같은 결과가 나온다.)

[검색 성공] 파일명 순서 흐름대로 검색

그러나 파일명 순서 흐름대로가 아닌 'issue image'를 검색하면 원하는 결과가 나오지않는다.

('20201113 test', '20201113 image', 'te ' 등... 도 같은 결과가 나온다.)

[검색 실패] 파일명 중간 단어 생략 후 검색

클라우드에서 검색 기능은 매우 중요하다고 생각한다.

파일이 많이 저장된 사용자가 찾고자 하는 파일명을 순서대로 기억하고 있지 않다면? 그 경우 Nextcloud에서 파일을 찾기 어려울지도 모른다.😭😭

 

이러한 점을 개선점으로 이슈화하려고 했는데, 검색 문자열 중간에 '%'를 넣으면 내가 원하는 대로 검색 결과가 나오는 것을 발견했다..!

😲😲😲 의도한게 아닌데 검색이 되어 정말 놀랐다. 데이터베이스 전공 수업에서 배운 부분검색을 위한 Like절과 '%'기호가 생각났다.

[검색 성공]파일명 순서 흐름대로가 아닌 중간 단어 생략 후 검색 + 공백대신 '%'기호 사용

사용자가 검색어를 입력하면 공백란을 '%'기호로 대체하여 서버로 보내는 방법을 생각했다.

SearchEvent 클래스의 함수 getSearchQuery가 쿼리문을 반환하기 전에 공백란을 '%'기호로 대체한 후 반환하도록 하였다.

 

Before

1
2
3
public String getSearchQuery() {
        return this.searchQuery;
    }
cs

After

1
2
3
public String getSearchQuery() {
        return this.searchQuery.replace(" ","%");
    }
cs

수정한 코드를 빌드한 후 실행시켜 보니 파일명 순서 흐름대로 검색하지 않아도 원하는 파일을 검색할 수 있다.

[검색 성공]파일명 순서 흐름대로가 아닌 중간 단어 생략 후 검색 + 공백대신 '%'기호로 대체하도록 코드 수정

검색 기능을 개선할 수 있는 방법을 이슈화 시켰다. #7325

+ 이슈 등록전에 멘토님께 먼저 보여드리고 내용에 대한 첨삭 피드백을 받았다.

 

Android version: 5
Device model: Samsung Galaxy S9
Nextcloud app version: 3.13.1

 

Yuna Github: https://github.com/Kuuuna98

Nextcloud/android Github: https://github.com/nextcloud/android

+ Recent posts