0

Lucene을 사용하여 모바일 응용 프로그램을 개발 중입니다. 색인 파일을 포함하는 폴더가 있습니다. 응용 프로그램에서 이러한 인덱스 파일을 검색에 사용하려고합니다. Lucene Library는이 폴더의 경로가 읽기를 기대합니다. 이 폴더를 assets 폴더에 넣었습니다. 하지만이 폴더의 경로를 가져올 수 없습니다. Android 저장소 문서를 확인했습니다. 하지만 기존의 폴더를 외부 저장소에 추가하는 방법을 찾지 못했습니다. 외부 저장소에 추가하면 getExternalFilesDir()으로 경로를 가져올 수 있습니다. 에뮬레이터를 사용하여 작업하고 있습니다.기존 폴더를 Android에 추가하고 사용하는 방법은 무엇입니까?

Directory dir = FSDirectory.open(Paths.get("path of index folder")); 
IndexReader reader = DirectoryReader.open(dir); 
searcher = new IndexSearcher(reader); 

위의 코드 섹션은 폴더 경로를 직접 지정할 수 있으므로 Java SE 응용 프로그램에서 잘 작동합니다. 하지만 안드로이드에서는 에뮬레이터를 사용하여 작업하고 있습니다. 어떻게 안드로이드에서 인덱스 폴더의 경로를 줄 수 있습니까? 애플리케이션에서이 폴더를 어디에 배치해야합니까?

답변

0

애셋을 폴더에 넣은 다음 첫 번째 실행시 애셋을 파일 시스템에 복사합니다. 그런 다음 작성한 위치를 Lucene에게 전달할 수 있습니다.

경고 : 나는 Lucene을 사용하려고 시도했으나 1 년 전 Android에서 이식되지 않은 IO 기능을 사용했기 때문에 사용할 수 없었습니다. 이제 Android 1.8에 Java 1.8이 있었을 지 모르지만 그렇지 않은 경우 해결해야 할 추가 문제가있을 것입니다.

+0

답해 주셔서 감사합니다. 인덱스 파일을 내부 저장소에 썼습니다. 나는 "getFilesDir(). toString()"을 사용하여 인덱스 폴더의 경로를 얻는다. 당신이 말했듯이, Java 1.8이 존재하기 때문에 Lucene은 현재 안드로이드에서 작업 중입니다. 참고 : Lucene 버전 7.0.1 SDK 26 – candreva

관련 문제