/* * call-seq: * term_enum.set_field(field) -> self * * Set the field for the term_enum. The field value should be a symbol as * usual. For example, to scan all title terms you'd do this; * * term_enum.set_field(:title).each do |term, doc_freq| * do_something() * end */ static VALUE frb_te_set_field(VALUE self, VALUE rfield) { TermEnum *te = (TermEnum *)DATA_PTR(self); int field_num = 0; VALUE rfnum_map = rb_ivar_get(self, id_fld_num_map); VALUE rfnum = rb_hash_aref(rfnum_map, rfield); if (rfnum != Qnil) { field_num = FIX2INT(rfnum); rb_ivar_set(self, id_field_num, rfnum); } else { Check_Type(rfield, T_SYMBOL); rb_raise(rb_eArgError, "field %s doesn't exist in the index", (char *)frb_field(rfield)); } te->set_field(te, field_num); return self; }