From: Demian K. <dem...@vi...> - 2011-08-17 17:37:18
|
I'm surprised that the implode approach doesn't work -- how exactly does it fail? Is the problem that as soon as you click one facet value, the others disappear so that you cannot select more? Or is it a more fundamental functional problem? I can't easily test code until I return from leave in a couple of weeks, but if you still need help at that point, I can take a deeper look. In the meantime, I'm happy to try to help on a more abstract level. - Demian ________________________________________ From: Mac Dan [mcd...@gm...] Sent: Wednesday, August 17, 2011 12:39 PM To: vuf...@li... Subject: [VuFind-Tech] Multiple Selection of Facet Values Hi guys, Has anyone implemented multiple selection of facet values? I am trying to make the facet behavior more flexible by enabling selection of several values under a facet. One way to do it is to OR the filters passed in the web/sys/searchobject/solr.php file. Here's the code in which the filters are passed: // Define Filter Query $filterQuery = $this->hiddenFilters; foreach ($this->filterList as $field => $filter) { foreach ($filter as $value) { // Special case -- allow trailing wildcards and ranges: if (substr($value, -1) == '*' || preg_match('/\[[^\]]+\s+TO\s+[^\]]+\]/', $value) ) { $filterQuery[] = "$field:$value"; } else { $filterQuery[] = "$field:\"$value\""; } } } I have tried replacing the innermost foreach loop with $filterQuery[] = "$field:(\"" . implode('" OR "', $filter) . "\")"; but that does not produce the results I want. Additionally, I have tried $newfilterQuery=implode(OR, $filterQuery), and passed the variable $newfilterQuery into the search method but neither does that work. The search method seems to only allow an array of filter values automatically enforcing an AND. Faced with the AND constraint I thought I could implement multiple selection by executing independent searches, one for each of the filters, then merge the results afterwards. Of course this method would be inefficient if there are many filters but I only want to implement the multiple selection for one main facet so the time it takes to complete the process should not be a problem. The problem, however, is how to merge the results. I'd really appreciate any thoughts on this, or even better, ideas on how I can OR the filters. Daniel |