Unfortunately, as you say, this feature is not available out of the box. We have a JIRA ticket about it:
http://vufind.org/jira/browse/VUFIND-45
There is also a broader JIRA ticket about improving VuFind's facet behavior in general; right now all faceting is limited to narrowing down in an additive fashion, but it would be nice to have more advanced features like OR'ed limits and the ability to exclude specific values with NOT.
http://vufind.org/jira/browse/VUFIND-177
I hope to be able to address these issues as part of the VuFind 2.0 redesign, but that's a large project that won't be completed for at least a year or so. In the meantime, if you want to try to work on this within the VuFind 1.x codebase, I'd be happy to help out as much as I can.
Essentially it boils down to three problems:
1.) Figure out how to make the behavior configurable in a logical fashion
2.) Figure out how to pass parameters in the URL to get the correct behavior
3.) Figure out how to achieve the behavior based on the passed parameters
Of course, if you're only interested in implementing this locally rather than making it something that's part of the standard VuFind distribution, you can probably get away with cutting some corners on the design of points 1 and 2. Even if you would like to share code, it may make sense to do a quick and dirty implementation first to prove the theory and then refine the design from there.
For point #1, we probably need new settings in web/conf/facets.ini... but you might be able to hard-code something in the advanced search template and worry about configuration later.
For point #2, you can take a look at how filters are handled in web/sys/SearchObject/Base.php. Particularly relevant are the renderSearchUrl() and initFilters() methods, which show how filters are read from the URL and how URLs are built using saved filter settings in the object. Perhaps we need to maintain multiple types of filter arrays with different parameter names in order to allow all the necessary functionality. Coming up with a good design here is probably the hardest part of the problem -- I haven't had a chance to sit down and really think about it yet myself, but I'd be happy to discuss it with you if you have some ideas.
For point #3, you should look at the processSearch method in web/sys/SearchObject/Solr.php, which shows how the object properties created in the base class are converted into actual Solr filter queries and passed along to the query.
Sorry that this isn't easier to deal with... but hopefully this will point you in the right general direction. Let me know if I can do anything more to help.
- Demian
> -----Original Message-----
> From: John Wynstra [mailto:john.wynstra@...]
> Sent: Wednesday, April 20, 2011 7:53 AM
> To: vufind-tech@...
> Subject: [VuFind-Tech] ORing multiple formats
>
> The "Advanced Form" for Colorado State University's vufind ORs mutliple
> format selections together as a filter. This allows them to select
> multiple formats and get results. This is not out of the box behavior
> on our site where multiple format selections are ANDed. Is this
> behavior configurable or does it have to be programmed?
>
> CSU search results url contains the following:
> &filter[]=format:("Books"+OR+"E-Books")
>
> UNI search results url contains the following:
> &filter[]=format%3A"Books"&filter[]=format%3A"E-Books"&
>
> When I replace our filter with theirs in our URL I get no results even
> though I should based on the data.
>
> Any guidance in this would be appreciated. I have poked around in the
> search parameters, but am feeling a little unclear on how to proceed.
>
>
> --
> <><><><><><><><><><><><><><><><><><><>
> John Wynstra
> Library Information Systems Specialist
> Rod Library
> University of Northern Iowa
> Cedar Falls, IA 50613
> wynstra@...
> (319)273-6399
> <><><><><><><><><><><><><><><><><><><>
>
> -----------------------------------------------------------------------
> -------
> Benefiting from Server Virtualization: Beyond Initial Workload
> Consolidation -- Increasing the use of server virtualization is a top
> priority.Virtualization can reduce costs, simplify management, and
> improve
> application availability and disaster protection. Learn more about
> boosting
> the value of server virtualization. http://p.sf.net/sfu/vmware-
> sfdev2dev
> _______________________________________________
> Vufind-tech mailing list
> Vufind-tech@...
> https://lists.sourceforge.net/lists/listinfo/vufind-tech
|