Merge pull request #768 from kiwix/spelling_correction

kiwix-search --spelling ZIMFILE PATTERN
pull/747/head
Kelson 4 months ago committed by GitHub
commit 6ed59398e4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -22,7 +22,11 @@
#include <zim/search.h>
#include <zim/suggestion.h>
#include <kiwix/spelling_correction.h>
#include <xapian.h>
#include <iostream>
#include <filesystem>
#include "../version.h"
@ -46,11 +50,19 @@ Arguments:
Options:
-s --suggestion Suggest article titles based on the few letters of the PATTERN instead of making a fulltext search. Work a bit like a completion solution
--spelling Suggest article titles based on the spelling corrected PATTERN instead of making a fulltext search.
-v --verbose Give details about the search process
-V --version Print software version
-h --help Print this help
)";
std::filesystem::path getKiwixCachedDataDirPath()
{
std::filesystem::path home(getenv("HOME"));
std::filesystem::path cacheDirPath = home / ".cache" / "kiwix";
std::filesystem::create_directories(cacheDirPath);
return cacheDirPath;
}
int main(int argc, char** argv)
{
@ -87,6 +99,11 @@ int main(int argc, char** argv)
for (const auto& r:searcher.suggest(pattern).getResults(0, 10)) {
cout << r.getTitle() << endl;
}
} else if (args.at("--spelling").asBool()) {
kiwix::SpellingsDB spellingsDB(archive, getKiwixCachedDataDirPath());
for (const auto& r:spellingsDB.getSpellingCorrections(pattern, 1)) {
cout << r << endl;
}
} else {
zim::Searcher searcher(archive);
searcher.setVerbose(verboseFlag);
@ -98,6 +115,9 @@ int main(int argc, char** argv)
} catch ( const std::runtime_error& err) {
cerr << err.what() << endl;
exit(1);
} catch ( const Xapian::Error& err) {
cerr << err.get_msg() << endl;
exit(1);
}
exit(0);

Loading…
Cancel
Save