README.md in bento_search-1.4.4 vs README.md in bento_search-1.5.0
- old
+ new
@@ -8,38 +8,35 @@
Rails 3.x or 4.x. ruby 1.9.3+
### Goals: To help you
* **Get up and running as quickly as possible** with searching and displaying
- results from a third-party service. Solutions to idiosyncracies and
- undocumented workarounds are encoded in a shared codebase, which abstracts
- everything to a good, simple code API giving you building blocks to focus
- on your needs, not the search service's problems.
+ results from a third-party service. Simple common code API, with idiosyncracies and
+ undocumented workarounds abstracted away.
* Let you switch out one search service for another in an already built
application with as little code rewriting as possible. **Avoid vendor lock-in**.
* Give you the harness to **write adapters for new search services**, without
having to rewrite common general functionality, just focus on the interface
with the new API you want to support.
-bento_search is focused on use cases for academic libraries, which is mainly
-evidenced by the search engine adapters currently included, and by the
-generalized domain models including fields that matter in our domain (issn,
-vol/issue/page, etc), and some targetted functionality (OpenURL generation).
-But it ought to be useful for more general basic use
-cases too (we include a google site search adapter for instance).
+bento_search is focused on use cases for academic libraries; the shared
+model for search results includes including fields that matter in our domain (issn,
+vol/issue/page, etc), although they ought to have what's needed for general
+basic use too. There is some targetted functionality for academic library/publishing use
+(eg OpenURL generation).
Adapters currently included in bento_search
-* Google Books (requires free api key)
-* Scopus (requires license)
-* Serial Solution Summon (requires license)
-* Ex Libris Primo (requires license)
-* EBSCO Discovery Service (requires license)
-* EBSCOHost 'traditional' API (requires license)
-* WorldCat Search (requires OCLC membership to get api key)
-* Google Site Search (requires sign-up for more than 100 searches/day)
-* JournalTOCs (limited support for fetching current articles by ISSN, free but requires registration)
+* [Google Books](https://books.google.com/) (requires free api key)
+* [Scopus](http://www.elsevier.com/solutions/scopus) (requires license)
+* [Serial Solution Summon](http://www.proquest.com/products-services/The-Summon-Service.html) (requires license)
+* [Ex Libris Primo](http://www.exlibrisgroup.com/category/PrimoOverview) (requires license)
+* [EBSCO Discovery Service](https://www.ebscohost.com/discovery) (requires license)
+* [EBSCOHost](https://www.ebscohost.com/) 'traditional' API (requires license)
+* [WorldCat Search](https://www.worldcat.org/) (requires OCLC membership to get api key)
+* [Google Site Search](https://www.google.com/work/search/products/gss.html) (requires sign-up for more than 100 searches/day)
+* [JournalTOCs](http://www.journaltocs.hw.ac.uk/) (limited support for fetching current articles by ISSN, free but requires registration)
### Scope of functionality
@@ -215,9 +212,34 @@
Kaminari's paginate method:
~~~~ruby
<%= paginate results.pagination %>
~~~~
+
+### Multi-field search
+
+Some search engines support-multi field searching, an engine advertises if it does:
+
+ engine_instance.multi_field_searching? # => `true` or `false`
+
+The bento_search multi-field search feature always combines multiple
+fields with boolean 'and' (intersection). You call a multi-field search
+with a :query hash argument whose value is a hash of search-fields and
+queries:
+
+ engine.search(:query => {
+ :title => '"Reflections on the History of Debt Resistance"',
+ :author => 'Caffentzis'
+ })
+
+The search field keys can be either semantic_search_field names, or internal
+engine search fields, or a combination. If the key matches a semantic search field
+declared for the engine, that will be preferred.
+
+This can be used to expose a multi-field search to users, and the `bento_field_hash_for`
+helper method might be helpful in creating your UI. But this is also useful for looking
+up known-item citations -- either by author/title, or issn/volume/issue/page, or doi, or
+anything else -- as back-end support for various possible functions.
### Concurrent searching
If you're going to search 2 or more search engines at once, you'll want to execute
those searches concurrently. For instance, if GoogleBooks results take 2 second