How can I manually edit the search options in a facet block? I have a facet for a field, the values of which are:

(FACETAPI DEFAULT)


yes (db: y)
no (db: n)
maybe (db: m)


By default, the facet shows all three of these options.  However, I only want to show yes or no to the user, and I want to include the value of maybe in both:

(WHAT I WANT)


yes (db: y or m)
no (db: (n or m)


What I have tried

I know I could try to do an OR search with the facet and rewrite my links to search both, but I don't want to give users the option to search just "maybe"; I only want two options, not three.

It would be great if there was a stable version of the Apachesolr Facet Builder for D7.  One can dream...

I am using the Facet API Bonus module but this allows me to "Rewrite items" or "Exclude items," not combine three items into two as I described above.

I read this wunderkraut article on extending Facet API but it covers adding sorts, plugins, widgets, dependencies, and the like-- not the facets themselves.

I also looked at this wunderkraut article, which suggests I should use something like hook_facetapi_facet_info_alter(), but I don't know how to edit the field values to combine them.
I decided to implement this by creating a new facet instead of editing an existing one.  This article describes the process.

The basic code looks like this:

/**
 * Implements hook_entity_property_info_alter().
 */
function MYMODULE_entity_property_info_alter(&amp;$info) {
  $info['user']['properties']['agg_gender'] = array(
    'type' =&gt; 'text',
    'label' =&gt; t('Search API Agg Gender'),
    'sanitized' =&gt; TRUE,
    'getter callback' =&gt; 'MYMODULE_search_agg_gender_getter_callback',
  );
}

/**
 * Getter callback for agg gender property.
 */
function MYMODULE_search_agg_gender_getter_callback($item) {
  // Need to load the user object to get fields
  $account = user_load($item-&gt;uid);
  switch ($account-&gt;field_gender['und'][0]['value']) {
    case 'F':
      return 'f';
      break;
    case 'M':
      return 'm';
      break;
    case 'O':
      return 'fm';
      break;
  }
}