Andrew, you started switching to DisMaxRequestHandler, current SVN
checkout is broken because of that...
I finally found time to have a deeper look at the code and want to share
some findings and ask some questions...
- solrconfig.xml of the biblio core now includes several DisMax handlers
for different serach types (e.g. Title, Author, Subject, AllFields...).
Mapping searches to index fields will be done in solrconfig.xml in the
future. There is still a StandardRequestHandler (name='standard'), I
guess it will be used for all searches not covered by special DisMax
handlers, e.g. searches by id, by callnumber etc., correct?
- web/services/Search/Home.php was cleaned up heavily. Most stuff from
there is in Results.php now. But call to Results.php in Home.php doesn't
work that way (you still have a Home object after that, not a Results
object...). Is the goal to have a special Results object instead of a
general Home object for everything in service module Search? Where will
that object be created? In index.php (I hacked it into that now) or in
Home.php? Call it from the user interface with a URL like
- the new web/services/Search/Results.php is waiting for some redesign,
correct? At the moment it processes simple and advanced search, mainly
in function processSearch() by building an array $search out of user
input, then requesting a serialized (Solr) query string ($query)
suitable for StandardRequestHandler from buildQuery() in Solr.php (or
from other DB connector) and passing that query string to function
search() of Solr.php (or other DB connector).
- Solr.php needs to be adjusted. Solr::buildQuery(), if it survives,
needs to be heavily changed for DisMax. I could imagine, that it simply
returns a suitable Solr handler name (e.g. "Title" for searches in
titles, "AllFields" for a search in any) plus a reformulated query
string if necessary (for searches that are handled by the standard
request handler). How will advanced searches be handled in the future?
Dismax isn't a solution for that. Maybe simply drop the advanced search?
Calls to function Solr::search() in Home.php and/or Results.php don't
match its current implementation. Solr::search() needs to know at least,
to call which requestHandler in Solr (in which Core)...
Those are just my findings looking at the source code and some ideas to
get this thing quickly working again. But no (re-)design considerations.
Maybe someone (Andrew?) can elaborate a bit more on the principal ideas
behind the DisMax implementation in VuFind?
I have it half way working now again by hacking somehow around these
issues. But that's not the way to go, because I don't really have a
concept for doing this. But from looking at the source, I can't guess
where it's going either...
Verbundzentrale des Gemeinsamen Bibliotheksverbundes (VZG)
Platz der Göttinger Sieben 1, D 37073 Göttingen
kinstler@..., +49 (0) 551 39-13431, http://www.gbv.de