From c35f6f91425c7d47299981f45cd42ff27497eae1 Mon Sep 17 00:00:00 2001 From: Maneesh P M Date: Thu, 13 May 2021 12:59:48 +0530 Subject: [PATCH 1/2] Add `get_zimId` method to Result get_zimId method allows the user to get the uuid of the archive from which a result is retrieved directly from the search result itself. --- include/searcher.h | 1 + src/searcher.cpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/include/searcher.h b/include/searcher.h index d3c0315e8..9c66e2b7b 100644 --- a/include/searcher.h +++ b/include/searcher.h @@ -49,6 +49,7 @@ class Result virtual int get_wordCount() = 0; virtual int get_size() = 0; virtual int get_readerIndex() = 0; + virtual std::string get_zimId() = 0; }; struct SearcherInternal; diff --git a/src/searcher.cpp b/src/searcher.cpp index 65f6f25f8..f55f8895a 100644 --- a/src/searcher.cpp +++ b/src/searcher.cpp @@ -46,6 +46,7 @@ class _Result : public Result virtual int get_wordCount(); virtual int get_size(); virtual int get_readerIndex(); + virtual std::string get_zimId(); private: zim::SearchResultSet::iterator iterator; @@ -265,6 +266,12 @@ int _Result::get_readerIndex() { return iterator.getFileIndex(); } +std::string _Result::get_zimId() +{ + std::ostringstream s; + s << iterator.getZimId(); + return s.str(); +} } From e2f6d91d51f97dd479366643d7fd51f77c637f77 Mon Sep 17 00:00:00 2001 From: Maneesh P M Date: Mon, 17 May 2021 19:23:43 +0530 Subject: [PATCH 2/2] Remove get_readerIndex in favor of get_zimId The function get_readerIndex was used to get the zimId using an ordered vector of readers. Now we can use get_zimId directly. --- include/searcher.h | 1 - src/search_renderer.cpp | 4 +--- src/searcher.cpp | 5 ----- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/include/searcher.h b/include/searcher.h index 9c66e2b7b..8acf929ce 100644 --- a/include/searcher.h +++ b/include/searcher.h @@ -48,7 +48,6 @@ class Result virtual std::string get_content() = 0; virtual int get_wordCount() = 0; virtual int get_size() = 0; - virtual int get_readerIndex() = 0; virtual std::string get_zimId() = 0; }; diff --git a/src/search_renderer.cpp b/src/search_renderer.cpp index fa1c16dfa..0e503e330 100644 --- a/src/search_renderer.cpp +++ b/src/search_renderer.cpp @@ -77,9 +77,7 @@ std::string SearchRenderer::getHtml() result.set("title", p_result->get_title()); result.set("url", p_result->get_url()); result.set("snippet", p_result->get_snippet()); - auto readerIndex = p_result->get_readerIndex(); - auto reader = mp_searcher->get_reader(readerIndex); - result.set("resultContentId", mp_nameMapper->getNameForId(reader->getId())); + result.set("resultContentId", mp_nameMapper->getNameForId(p_result->get_zimId())); if (p_result->get_wordCount() >= 0) { result.set("wordCount", kiwix::beautifyInteger(p_result->get_wordCount())); diff --git a/src/searcher.cpp b/src/searcher.cpp index f55f8895a..6f3b54257 100644 --- a/src/searcher.cpp +++ b/src/searcher.cpp @@ -45,7 +45,6 @@ class _Result : public Result virtual std::string get_content(); virtual int get_wordCount(); virtual int get_size(); - virtual int get_readerIndex(); virtual std::string get_zimId(); private: @@ -262,10 +261,6 @@ int _Result::get_wordCount() { return iterator.getWordCount(); } -int _Result::get_readerIndex() -{ - return iterator.getFileIndex(); -} std::string _Result::get_zimId() { std::ostringstream s;