/*
* call-seq:
* query.terms(searcher) -> term_array
*
* Returns an array of terms searched for by this query. This can be used for
* implementing an external query highlighter for example. You must supply a
* searcher so that the query can be rewritten and optimized like it would be
* in a real search.
*/
static VALUE
frt_q_get_terms(VALUE self, VALUE searcher)
{
int i;
VALUE rterms = rb_ary_new();
HashSet *terms = term_set_new();
GET_Q();
Searcher *sea = (Searcher *)DATA_PTR(searcher);
Query *rq = sea->rewrite(sea, q);
rq->extract_terms(rq, terms);
q_deref(rq);
for (i = 0; i < terms->size; i++) {
Term *term = (Term *)terms->elems[i];
rb_ary_push(rterms, frt_get_term(term->field, term->text));
}
hs_destroy(terms);
return rterms;
}