Method: Ferret::QueryParser#fields=
- Defined in:
- ext/r_qparser.c
#fields=(fields) ⇒ self
Set the list of fields. These fields are expanded for searches on “*”.
300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 |
# File 'ext/r_qparser.c', line 300 static VALUE frb_qp_set_fields(VALUE self, VALUE rfields) { GET_QP; HashSet *fields = frb_get_fields(rfields); /* if def_fields == all_fields then we need to replace both */ if (qp->def_fields == qp->all_fields) qp->def_fields = NULL; if (qp->tokenized_fields == qp->all_fields) qp->tokenized_fields = NULL; if (fields == NULL) { fields = hs_new_ptr(NULL); } /* make sure all the fields in tokenized fields are contained in * all_fields */ if (qp->tokenized_fields) hs_safe_merge(fields, qp->tokenized_fields); /* delete old fields set */ assert(qp->all_fields->free_elem_i == dummy_free); hs_destroy(qp->all_fields); /* add the new fields set and add to def_fields if necessary */ qp->all_fields = fields; if (qp->def_fields == NULL) { qp->def_fields = fields; qp->fields_top->fields = fields; } if (qp->tokenized_fields == NULL) qp->tokenized_fields = fields; return self; } |