Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Note: Currently incomplete
************************************************************************************
* Introduction
************************************************************************************
Serendip is a javascript library that is intended to make it easier to create a GUI frontend
using the search engine Solr.
The purpose of the Serendip library is to make it easy to display search results generated by
Solr. In the simplest scenario you just need to edit the configuration options:
js/config/serendip.config.main.js
js/config/serendip.theme.config.js files
And also, of course, configure your Solr search engine correctly.
It is likely many will want to change the search appearance to fit their own needs. There are
basically three ways to do it depending on the flexibility you want. The easiest way is to just change
the serendip.css file adding or changing the styles you want. If you want or need to change the html
that is output you can change the html prototypes that are specified in the search.html file.
************************************************************************************
* Features
************************************************************************************
- All JSON parsing taking care of. Just change the HTML prototypes specified in the search.html file
- All search, sorting, paging and filtering is done async without reloading the page.
- All search, sorting, paging and filtering events are saved in the browser history.
- This means that:
- Browser back and forward buttons work as expected.
- Copying the URL into a new window will give you the exact same results along
with the sorting, paging and filtering parameters.
- Allows you to bookmark any result.
- Sort results ascending/descending based on Solr fields. Possible to display/use multiple sort fields.
- Display highlighted results (based on any Solr field) with easy configuration.
- Use any number of facets to filter the search results with powerful and easy configuration.
- The filter can include multiple values from the same facet field (OR'ed) to display the
combined results for those values.
- Facet values from different facet fields are used to filter results.
- Possible to use facets to create faceted navigation.
- "Show more" functionality to display more facets based on limits specified in configuration.
- Three types of facets supported
- Regular text value facets
- Dynamic date range facets created by specifying a startdate, enddate and dategap.
- Add any additional Solr config options easily in configuration
************************************************************************************
* Solr configuration (serendip.config.main.js)
************************************************************************************
// Add the url to you solr server
serendip.setSolrUrl("http://localhost:8080/solr/select");
// Add more available fields
serendip.addFieldConfig({ name: "id", id: "id", header: "ID", selected: false, enabled: false });
serendip.addFieldConfig({ name: "url", id: "url", header: "Url", selected: false, enabled: false });
serendip.addFieldConfig({ name: "date", id: "bda", header: "Date", selected: false, enabled: true , isDate: true, dateFormat: "dd.mmm.yyyy"});
serendip.setSearchAllFields(true);
serendip.init("index.html");
************************************************************************************
* Facet / Filter config (serendip.config.facets.js)
************************************************************************************
// Example simple facet / filter
facets.push(new Serendip.Facet({
id: "name", // Must be unique for all filters/facets
selected: true, // If it is initially displayed
name: "name_opf_s", // This is the name in Solr schema
activeHeader: "Name", // The header used when displaying active facets
header: "Filter by name", // The header used when displaying available facets
minFacetsToDisplay: 5, // Facets shown
maxFacetsToDisplay: 30 // Facets that can be shown by by clicking "show more" link
}));
// Date facet
facets.push(new Serendip.DateFacet({
id: "date",
selected: true,
name: "date_opf_d",
activeHeader: "Date",
header: "Filter by date",
minFacetsToDisplay: 5,
maxFacetsToDisplay: 10,
dateStart: "NOW/YEAR-10YEARS", // Uses Solr/Lucene constants
dateEnd: "NOW/YEAR+1YEAR",
dateGap: "+1MONTH",
dateFormat: "mmmm yyyy", // Look in documentation 'Date formats' for all available formats
sortDir: "desc" // Or 'asc' for ascending
}));
************************************************************************************
* Date formats
************************************************************************************
See this link for info on what values are available for specifying the date ranges:
http://lucene.apache.org/solr/api/org/apache/solr/util/DateMathParser.html
These are options for the dateformat:
d Day of the month as digits; no leading zero for single-digit days.
dd Day of the month as digits; leading zero for single-digit days.
ddd Day of the week as a three-letter abbreviation.
dddd Day of the week as its full name.
m Month as digits; no leading zero for single-digit months.
mm Month as digits; leading zero for single-digit months.
mmm Month as a three-letter abbreviation.
mmmm Month as its full name.
yy Year as last two digits; leading zero for years less than 10.
yyyy Year represented by four digits.
h Hours; no leading zero for single-digit hours (12-hour clock).
hh Hours; leading zero for single-digit hours (12-hour clock).
H Hours; no leading zero for single-digit hours (24-hour clock).
HH Hours; leading zero for single-digit hours (24-hour clock).
M Minutes; no leading zero for single-digit minutes.
MM Minutes; leading zero for single-digit minutes.
s Seconds; no leading zero for single-digit seconds.
ss Seconds; leading zero for single-digit seconds.
For more dateformat options see:
http://blog.stevenlevithan.com/archives/date-time-format