mirror of
https://github.com/kiwix/kiwix-desktop.git
synced 2025-09-24 04:32:15 -04:00
Merge pull request #1086 from kiwix/handling_of_corrupted_xapian_db
Handling of corrupted Xapian DB during search
This commit is contained in:
commit
cce7de8820
@ -100,6 +100,25 @@ class IdNameMapper : public kiwix::NameMapper {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
struct SearchResultsWithEstimatedMatchCount
|
||||||
|
{
|
||||||
|
std::shared_ptr<zim::SearchResultSet> results;
|
||||||
|
int estimatedMatchCount = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
SearchResultsWithEstimatedMatchCount getSearchResults(zim::Search& s, int start, int pageLength)
|
||||||
|
{
|
||||||
|
SearchResultsWithEstimatedMatchCount r;
|
||||||
|
r.estimatedMatchCount = s.getEstimatedMatches();
|
||||||
|
r.results = std::make_shared<zim::SearchResultSet>(s.getResults(start, pageLength));
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // unnamed namespace
|
||||||
|
|
||||||
void
|
void
|
||||||
UrlSchemeHandler::handleSearchRequest(QWebEngineUrlRequestJob* request)
|
UrlSchemeHandler::handleSearchRequest(QWebEngineUrlRequestJob* request)
|
||||||
{
|
{
|
||||||
@ -131,10 +150,19 @@ UrlSchemeHandler::handleSearchRequest(QWebEngineUrlRequestJob* request)
|
|||||||
request->fail(QWebEngineUrlRequestJob::UrlInvalid);
|
request->fail(QWebEngineUrlRequestJob::UrlInvalid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SearchResultsWithEstimatedMatchCount searchResult;
|
||||||
|
try {
|
||||||
|
searchResult = getSearchResults(*search, start, pageLength);
|
||||||
|
} catch (...) {
|
||||||
|
request->fail(QWebEngineUrlRequestJob::RequestFailed);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
kiwix::SearchRenderer renderer(
|
kiwix::SearchRenderer renderer(
|
||||||
search->getResults(start, pageLength),
|
*searchResult.results,
|
||||||
start,
|
start,
|
||||||
search->getEstimatedMatches());
|
searchResult.estimatedMatchCount);
|
||||||
renderer.setSearchPattern(searchQuery);
|
renderer.setSearchPattern(searchQuery);
|
||||||
renderer.setSearchBookQuery("content="+bookId.toStdString());
|
renderer.setSearchBookQuery("content="+bookId.toStdString());
|
||||||
renderer.setProtocolPrefix("zim://");
|
renderer.setProtocolPrefix("zim://");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user