Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Stop-words
- static const char * sw[] = {
- "a", "about", "an", "and", "are", "as", "at",
- "be", "by",
- "en",
- "for", "from",
- "how",
- "i", "in", "is", "it",
- "of", "on", "or",
- "that", "the", "this", "to",
- "was", "what", "when", "where", "which", "who", "why", "will", "with"
- };
- static Xapian::QueryParser
- initialise_queryparser(const Xapian::Database & db)
- {
- Xapian::SimpleStopper* mystopper;
- mystopper = new Xapian::SimpleStopper(sw, sw + sizeof(sw) / sizeof(sw[0]));
- Xapian::Stem stemmer("english");
- Xapian::QueryParser parser;
- parser.add_prefix("title", "S");
- parser.add_prefix("subject", "S");
- parser.set_database(db);
- parser.set_default_op(Xapian::Query::OP_OR);
- parser.set_stemmer(stemmer);
- parser.set_stemming_strategy(Xapian::QueryParser::STEM_SOME);
- parser.set_stopper(mystopper->release());
- return parser;
- }
- DEFINE_TESTCASE(createfeaturevector, generated)
- {
- Xapian::FeatureList fl;
- string db_path = get_database_path("apitest_ranker1",
- db_index_two_documents);
- Xapian::Enquire enquire((Xapian::Database(db_path)));
- Xapian::MSet mset;
- vector<Xapian::FeatureVector> fv =
- fl.create_feature_vectors(mset, Xapian::Query("lions"), (Xapian::Database(db_path)));
- TEST(fv.empty());
- string querystr = "lions";
- Xapian::QueryParser parser = initialise_queryparser( (Xapian::Database(db_path)));
- Xapian::Query query_no_prefix = parser.parse_query(querystr,
- parser.FLAG_DEFAULT|
- parser.FLAG_SPELLING_CORRECTION);
- // query with 'title' field as default prefix "S"
- Xapian::Query query_default_prefix = parser.parse_query(querystr,
- parser.FLAG_DEFAULT|
- parser.FLAG_SPELLING_CORRECTION,
- "S");
- Xapian::Query query = Xapian::Query(Xapian::Query::OP_OR, query_no_prefix, query_default_prefix);
- enquire.set_query(query);
- mset = enquire.get_mset(0, 10);
- fv = fl.create_feature_vectors(mset, query, (Xapian::Database(db_path)));
- for(size_t i =0;i<2;i++)
- {
- for(size_t j =0;j<19;j++)
- {
- printf("%f ",fv[i].get_fvals()[j]);
- }
- printf("\n");
- }
- return true;
- }
Add Comment
Please, Sign In to add comment