Synonyms
Андрей
sc_93 at list.ru
Tue Sep 9 16:04:13 BST 2025
How to operate with non-english languages?
I installed 1.4.29 version for Visual Studio 17. It works fine with English. Other languages ignore synonyms and get_spelling_suggestion(). Get_spelling_suggestion() function returns value only when add_spelling() was apllied for particular non English word.
I’ve also tried to pass internal stemmer to Xapian::Stem but gоt critical error.
Code
Xapian::WritableDatabase db("./index_data", Xapian::DB_CREATE_OR_OPEN);
db.add_synonym("ягода", "арбуз");
Xapian::TermGenerator indexer;
indexer.set_database(db);
indexer.set_flags(indexer.FLAG_SPELLING);
std::string ru_doc_id1 = "id1";
std::string ru_doc_content1 = "спелый арбуз";
std::string ru_doc_keylist1 = "спелый арбуз";
Xapian::Document doc1;
doc1.add_term(ru_doc_id1);
doc1.set_data(ru_doc_content1);
indexer.set_document(doc1);
indexer.index_text(ru_doc_keylist1);
db.replace_document(ru_doc_id1, doc1);
db.commit();
db.close();
Xapian::Database db1("./index_data");
std::string word = "~ягода";
std::string corrected2 = db1.get_spelling_suggestion(word);
if (corrected2 != "")
{word = corrected2;}
Xapian::Enquire enquire(db1);
Xapian::QueryParser qp;
qp.set_database(db1);
Xapian::Query query = qp.parse_query(word, Xapian::QueryParser::FLAG_SYNONYM);
enquire.set_query(query);
More information about the Xapian-discuss
mailing list