Я создаю мобильное приложение с использованиемact-native и использую собственный Java для выполнения поиска с использованием библиотеки Lucene 8.
Использование собственных модулей и обратных вызовов в этой документации: https://reactnative.dev/docs/0.5/native-modules-android
При попытке открыть папку указателей появляется ошибка: Индекс: Файловая система только для чтения
Примечание: 1) Я делаю index offline throw java, затем вручную я переместил Папку указателей в реактивный проект Как показано на этом изображении
2) Я читаю только из файла в Интернете перейти в онлайн, как это:
public class Searcher {
private Directory indexDirectoryPath;
private IndexReader indexReader;
protected IndexSearcher indexSearcher;
public Searcher() throws IOException {
indexDirectoryPath = FSDirectory.open(Paths.get("../Quraan.index"));
indexReader = DirectoryReader.open(indexDirectoryPath);
indexSearcher = new IndexSearcher(indexReader);
}
public ScoreDoc[] searchbyContent(String querytext) throws IOException, ParseException {
ScoreDoc[] hits;
try {
StandardAnalyzer analyzer = new StandardAnalyzer();
Query q = new QueryParser("content", analyzer).parse(querytext);
int hitsPerPage = 10;
TopDocs docs = indexSearcher.search(q, hitsPerPage);
hits = docs.scoreDocs;
} catch (Exception e) {
e.printStackTrace();
return null;
}
return hits;
}
}
здесь я отправляю результат:
@ReactMethod
public void searchCallback(String querytext,Callback errCallback, Callback sucCallback){
try {
Searcher s = new Searcher();
ScoreDoc[] hits = s.searchbyContent(querytext);
int docId = hits[1].doc;
Document d = s.indexSearcher.doc(docId);
sucCallback.invoke(d.get("content"));
}catch (IllegalViewOperationException | IOException | ParseException e){
errCallback.invoke(e.getMessage());
}
}
и вот я получаю его в js:
async getMessage() {
Searcher.searchCallback("Lord",
(err) => { this.setState({ searchResult: err }) },
(message) => { this.setState({ searchResult: message }) },
)
}
Так может ли кто-нибудь помочь мне решить эту проблему?