Skip to content

Commit

Permalink
fixup! Introduce a SearchResult class.
Browse files Browse the repository at this point in the history
  • Loading branch information
mgautierfr committed May 11, 2021
1 parent d51413f commit 85e2c31
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 28 deletions.
12 changes: 6 additions & 6 deletions include/zim/search.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class Archive;
class InternalDataBase;
class Query;
class Search;
class SearchResult;
class SearchResultSet;


/**
Expand Down Expand Up @@ -170,7 +170,7 @@ class Search
* @param end The end of the range to get
* (offset of the result past the end of the range).
*/
const SearchResult getRange(int start, int end) const;
const SearchResultSet getResults(int start, int end) const;

/** Get the number of estimated results for this search.
*
Expand All @@ -195,7 +195,7 @@ class Search
*
* It mainly allows to get a iterator.
*/
class SearchResult
class SearchResultSet
{
public:
typedef search_iterator iterator;
Expand All @@ -206,12 +206,12 @@ class SearchResult
/** The end iterator on the result range. */
iterator end() const;

/** The size of the SearchResult (end()-begin()) */
/** The size of the SearchResultSet (end()-begin()) */
int size() const;

private:
SearchResult(std::shared_ptr<InternalDataBase> p_internalDb, Xapian::MSet& mset);
SearchResult(std::shared_ptr<InternalDataBase> p_internalDb);
SearchResultSet(std::shared_ptr<InternalDataBase> p_internalDb, Xapian::MSet& mset);
SearchResultSet(std::shared_ptr<InternalDataBase> p_internalDb);

private: // data
std::shared_ptr<InternalDataBase> mp_internalDb;
Expand Down
4 changes: 2 additions & 2 deletions include/zim/search_iterator.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@

namespace zim
{
class SearchResult;
class SearchResultSet;
class search_iterator : public std::iterator<std::bidirectional_iterator_tag, Entry>
{
friend class zim::SearchResult;
friend class zim::SearchResultSet;
public:
search_iterator();
search_iterator(const search_iterator& it);
Expand Down
16 changes: 8 additions & 8 deletions src/search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -357,13 +357,13 @@ int Search::getEstimatedMatches() const
}
}

const SearchResult Search::getRange(int start, int end) const {
const SearchResultSet Search::getResults(int start, int end) const {
try {
auto enquire = getEnquire();
auto mset = enquire.get_mset(start, end);
return SearchResult(mp_internalDb, mset);
return SearchResultSet(mp_internalDb, mset);
} catch(Xapian::QueryParserError& e) {
return SearchResult(mp_internalDb);
return SearchResultSet(mp_internalDb);
}
}

Expand Down Expand Up @@ -406,33 +406,33 @@ Xapian::Enquire& Search::getEnquire() const
return *mp_enquire;
}

SearchResult::SearchResult(std::shared_ptr<InternalDataBase> p_internalDb, Xapian::MSet& mset) :
SearchResultSet::SearchResultSet(std::shared_ptr<InternalDataBase> p_internalDb, Xapian::MSet& mset) :
mp_internalDb(p_internalDb),
mp_mset(std::make_shared<Xapian::MSet>(std::move(mset)))
{}

SearchResult::SearchResult(std::shared_ptr<InternalDataBase> p_internalDb) :
SearchResultSet::SearchResultSet(std::shared_ptr<InternalDataBase> p_internalDb) :
mp_internalDb(p_internalDb),
mp_mset(nullptr)
{}

int SearchResult::size() const
int SearchResultSet::size() const
{
if (! mp_mset) {
return 0;
}
return mp_mset->size();
}

SearchResult::iterator SearchResult::begin() const
SearchResultSet::iterator SearchResultSet::begin() const
{
if ( ! mp_mset ) {
return nullptr;
}
return new search_iterator::InternalData(mp_internalDb, mp_mset, mp_mset->begin());
}

SearchResult::iterator SearchResult::end() const
SearchResultSet::iterator SearchResultSet::end() const
{
if ( ! mp_mset ) {
return nullptr;
Expand Down
4 changes: 2 additions & 2 deletions test/archive.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -389,8 +389,8 @@ void checkEquivalence(const zim::Archive& archive1, const zim::Archive& archive2
ASSERT_NE(0, search1.getEstimatedMatches());
ASSERT_EQ(search1.getEstimatedMatches(), search2.getEstimatedMatches());

auto result1 = search1.getRange(0, archive1.getEntryCount());
auto result2 = search2.getRange(0, archive2.getEntryCount());
auto result1 = search1.getResults(0, archive1.getEntryCount());
auto result2 = search2.getResults(0, archive2.getEntryCount());
auto firstSearchItem1 = result1.begin()->getItem(true);
auto firstSearchItem2 = result2.begin()->getItem(true);
ASSERT_EQ(mainItem.getPath(), firstSearchItem1.getPath());
Expand Down
10 changes: 5 additions & 5 deletions test/search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ std::vector<std::string> getSnippet(const zim::Archive archive, std::string quer
zim::Query _query;
_query.setQuery(query, false);
auto search = searcher.search(_query);
auto result = search.getRange(0, range);
auto result = search.getResults(0, range);

std::vector<std::string> snippets;
for (auto entry = result.begin(); entry != result.end(); entry++) {
Expand All @@ -67,7 +67,7 @@ TEST(Search, searchByTitle)
query.setQuery(mainItem.getTitle(), true);
auto search = searcher.search(query);
ASSERT_NE(0, search.getEstimatedMatches());
auto result = search.getRange(0, archive.getEntryCount());
auto result = search.getResults(0, archive.getEntryCount());
ASSERT_EQ(mainItem.getPath(), result.begin().get_path());
}
}
Expand Down Expand Up @@ -97,7 +97,7 @@ TEST(Search, indexFullPath)
auto search = searcher.search(query);

ASSERT_NE(0, search.getEstimatedMatches());
auto result = search.getRange(0, archive.getEntryCount());
auto result = search.getResults(0, archive.getEntryCount());
ASSERT_EQ(result.begin().get_path(), "testPath");
ASSERT_EQ(result.begin().get_dbData().substr(0, 2), "C/");
}
Expand Down Expand Up @@ -151,11 +151,11 @@ TEST(Search, multiSearch)
auto search0 = searcher.search(query);

ASSERT_EQ(archive.getEntryCount(), search0.getEstimatedMatches());
auto result0 = search0.getRange(0, 2);
auto result0 = search0.getResults(0, 2);
ASSERT_EQ(result0.size(), 2);
auto it0 = result0.begin();

auto result1 = search0.getRange(0, 5);
auto result1 = search0.getResults(0, 5);
ASSERT_EQ(result1.size(), 5);
auto it1 = result1.begin();

Expand Down
4 changes: 2 additions & 2 deletions test/search_iterator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ TEST(search_iterator, functions) {
zim::Query query;
query.setQuery("item", true);
auto search = searcher.search(query);
auto result = search.getRange(0, archive.getEntryCount());
auto result = search.getResults(0, archive.getEntryCount());

auto it = result.begin();

Expand All @@ -65,7 +65,7 @@ TEST(search_iterator, iteration) {
zim::Query query;
query.setQuery("item", true);
auto search = searcher.search(query);
auto result = search.getRange(0, archive.getEntryCount());
auto result = search.getResults(0, archive.getEntryCount());

auto it = result.begin();
ASSERT_EQ(it.get_title(), result.begin().get_title());
Expand Down
6 changes: 3 additions & 3 deletions test/suggestion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ namespace {
_query.setQuery(query, true).setVerbose(true);
auto search = searcher.search(_query);

auto searchResult = search.getRange(0, range);
auto searchResult = search.getResults(0, range);

std::vector<std::string> result;
for (auto entry = searchResult.begin();entry!=searchResult.end();entry++) {
Expand All @@ -53,7 +53,7 @@ namespace {
zim::Query _query;
_query.setQuery(query, true);
auto search = searcher.search(_query);
auto result = search.getRange(0, range);
auto result = search.getResults(0, range);

std::vector<std::string> snippets;
for (auto entry = result.begin(); entry != result.end(); entry++) {
Expand Down Expand Up @@ -448,7 +448,7 @@ namespace {
zim::Query query;
query.setQuery("Test Article", true);
auto search = searcher.search(query);
auto result = search.getRange(0, archive.getEntryCount());
auto result = search.getResults(0, archive.getEntryCount());

ASSERT_EQ(result.begin().get_path(), "testPath");
ASSERT_EQ(result.begin().get_dbData().substr(0, 2), "C/");
Expand Down

0 comments on commit 85e2c31

Please sign in to comment.