Version numbers correspond to package.json
version. Follows the major.minor.bugfix naming pattern as of 2.8.0.
- Algolia support added! Thanks @sumitsarker for the great contribution, #145.
- Splainer lets you do smart things around using highlighting in the query and/or snippeting to 200 characters to take a really large document field and shrink it to something that renders nicely. However sometimes you just want to see ALL the text. So now in a field specification you can control that by specifing
unabridged:body_content
for your long form text fields. #148 by @epugh.
-
When using Solr and proxing through Quepid, we require you to use a GET. However, when doing a doc lookup (to power snapshot compare) it falls back to JSONP, instead of using the specified GET. #146 by @epugh.
-
POTENTIALLY BREAKING CHANGE! Splainer-search has some logic around escaping queries. For example
OR
becomes\\OR
... It is rather unclear if this is actually a fully baked set of logic, and has created some bugs like o19s/quepid#910. We've commented out the escaping in Splainer-search, added logging about it, but will leave the code, tagged withSUSS_USE_OF_ESCAPING
. Going to ship this in the next version of Quepid and get feedback from community on if there are regressions that warrant restoring some sort of escaping. #147 by @epugh.
- Support Custom Headers being passed through to Solr. We have a nice refactoring of how headers are processed, and reusing the
esUrlSvc
in thesolrSearcherFactory
. #143 by @epugh.
- It appears that the DocResolver is needed regardless of if you support it or not. Weird stuff in Quepid otherwise happens. #141 by @epugh rolls back the change. Thanks @dacox for #140.
- Looking up individual documents from the search engine (i.e the DocResolver) didn't respect the proxy settings. Also found a bug in creating direct link to OpenSearch docs where you could get doubled
/_doc/_doc/
in the url! #139 by @epugh. Thanks @david-fisher for finding the snapshot with proxies issue.
- Custom Headers can now be used with Search API's. #138 by @dacox. Thanks Doug Cox!
- Bug fix for arrays passed into query templating via
qOptions
. #137 by @mkr. - Avoid the query object -> string -> hydrating -> string -> query object roundtrip and directly hydrate on the query object. #136 by @mkr.
- Rewriting the query templating, allowing for query options hierarchical object to be passed into query templates as
qOptions
. #135 by @epugh and @mkr.
- For custom
searchapi
we now track and store the response from the API for callers to look at. Added new error handling around custom mappers so you can figure which are having issues. #134 by @epugh.
- Introduced a
httpProxyTransportFactory
that wraps the othertransporters
for when you want to send a request via proxy. It is enabled by passing in yoursettings
the valueproxyUrl:'http://myserver/proxy'
. This works much better than the previous approach of managing the url with a proxy at the Quepid level. #133 by @epugh.
- In 2.26.0 we required you to specify a "responseParser" for a custom search api that was OS, ES, or Solr. However, that was VERY limiting, and required you to return your search results from your custom search api in one of those formats. We now have the concept of mappers, which are JavaScript code that converts from the JSON format that your API returns to the native JavaScript objects that splainer-search uses. In this release we have
numberOfResultsMapper
anddocsMapper
mappers defined, and this will evolve. #132 by @epugh.
- To support a custom search api, we need to be able to override how the SettingsValidator does a ping by passing in our own arguments. Not a perfect solution, but enables a MVP searchapi to work in Quepid. #131 by @epugh.
-
Fixed bug in pagination that didn't respect the
apiMethod
setting for Solr. If you used GET, splainer-search sent the request as JSONP anyway, causing errors in the Browser. #130 by @epugh. -
Vectara is the first Vector search engine to work with Splainer. #128 by @mkr.
- Support using a prefix for a image path for thumbnails, the same way we support it for images. #127 by @epugh fixes o19s/quepid#790 by @OkkeKlein.
- Solr changed the explanation of the score when using multiplicative boost functions via boost parameter somewhere between Solr 4.6 and Solr 8.11. #126 by @wrigleyDan fixes #125.
- Turns out the URL we have been crafting for OS/ES for
_explain
is the very old format! #124 by @epugh fixes this.
-
Template calls to OS and ES previously required you to add a "/template" to the url in tools like Quepid. However, by looking for an
id:
parameter in the query, we can identify when a template has been provide, and only then add the /template. This will make the experience in Quepid smoother, and fix some issues where non template calls are sent and fail due to the OS/ES url having a trailing /template! #122 by @epugh fixes o19s/quepid#747. -
Simplified the unit tests be eliminating the old ES4 and ES5 distinct tests. #121 by @epugh.
-
Urls to documents that have a document id with a
#
character embedded don't pass the id into OpenSearch and Elasticsearch. We now escape that character to fool the browser ;-). #120 by @epugh fixes #119. -
We also fixed a bug in how the urls for Elasticsearch 7+ and OpenSearch are formatted with the
/_doc/[id]
and/_explain/[id]
pattern. Splainer-search now only properly works with those search engines and above. #120 by @epugh.
-
Urls that link to a individual document in OpenSearch and ES7+ have changed to have a
_doc
element in the path. #117 by @mkr fixes o19s/quepid#701. -
npm outdated
highlights nothings. All dependencies (barring this is Angular 1 ;-) ) are up to date. #118 by @epugh.
-
We now support API keys! Search engine deploys (like Elastic Cloud) are increasingly locked down, with an API Key being the most common way to access them. Splainer-search now supports custom headers, which supports the api key usecase, and lays ground work for other use cases. A huge round of thanks goes to @aditya-kanekar who created the first implmentation via #116, and then @worleydl for making it more generic. This improvement will be surfaced into Splainer and Quepid asap.
-
Splainer-search is ASL2.0 licensed, but there was a mismatch in package.json that said MIT. Fixed this, and eliminated a old javascript
promise.js
implementation that isn't used in the library. #115 by @epugh.
-
Extract query performance timing data from Solr queries. We already had access to the information, it just wasn't passed through the splainer-search layer. #110 by @epugh.
-
Dependencies clean up. We were on very old testing infrastructure, and it was time to update. #111 by @epugh with input from @david-fisher.
-
Enable CI testing on CircleCI. We used to use TravisCI, and then we used nothing! #113 by @epugh.
-
OpenSearch support! #114 by @mkr.
- "Show Only Rated" feature in Quepid busted for ES. Highlighting on _id after a terms match in ES causes a index out of bounds exception. Also, the API method in explainOther needed to have the right case, might make a constants file at some point. #109 by @worleydl.
- Links to view Solr document should return JSON formatted docs instead of XML. Ok boomer? #107 by @begomeister.
- Javascript linting! #108 by @begomeister.
- Introduce the ability to specify GET instead of the default JSONP method for talking to Solr. Refactored to use the TransportFactory, similar to how we talk to Elasticsearch. Baby step towards supporting Solr V2 API with POSTs. #105 by @epugh.
- You can supply a prefix for a image field type by using JSON:
id, title:tile, {"name": "relative_image_url_s", "type":"image", "prefix": "https://i.imgur.com"}
. This will open up a lot of new ideas for managing your field specification.
- Using Querqy with Solr? We now return the
querqy_decorations
details in theparsedQueryDetails
property.
-
Support an empty explanation hash in the response from either ES or Solr. @A2Kashyap proxied a custom API to look like Elasticsearch response to Quepid, and therefore the explain output looked like
"_explanation": {}
, which we hadn't expected. o19s/quepid#465 by @A2Kashyap is fixed by #102 by @epugh. -
Handle both id field as
_id
(standard) and any alternative ID field in Elasticsearch when comparing Snapshots. Issue opened by @KennyLindahl at o19s/quepid#466 and fixed by @KennyLindahl via #101!
- Links to individual Documents generated for Solr search engines (
doc._url()
) have faceting turned on for ALL of the fields listed. This may be a feature to help you understand about a single document, however I don't quite have a use case that makes sense. @jeffryedvm showed me it taking 30 seconds to query a single Solr doc due to what was blindly being faceted on, and opened o19s/quepid#442.
- Solr typically returns empty arrays in the response when it doesn't have data, however we have seen that people mocking up a Solr response might return a
null
instead of a{}
array. Now check that situation as well.
- Return Solr query params in the
responseHeader.params
if they exist assearcher.parsedQueryDetails
. - Ran
npm audit
and upgraded dependencies.
- Support Elasticsearch scripted fields in querying. Thanks @dmitrykey for encouragement and testing. Thanks to @CGamesPlay for the implementation via #90.
- Support Elasticsearch templates in querying. Any URL that ends in
/template
for Elasticsearch will be assumed to be a template query. Thanks @danielibars for encouragement and testing. #92 by @epugh.
- Introduce to
searchFactory
the propertyparsedQueryDetails
that stores details about the query being processed by the search engine. Works with Solr and Elasticsearch. - Using Querqy with Solr? We now return the
querqy.infoLog
details in theparsedQueryDetails
property. - Upgrade JavaScript dependencies to be closer to what are used in the Quepid project.
- Introduce translate:content field type (similar to thumb:image_url), that lets you tag which fields you want to translate. We need to move this formatting logic over to Quepid instead of splainer-search ;-).
- Introduce image:image_url field type (similar to thumb:image_url), but larger.
- Solr - Disable highlight unless enabled in the fieldSpec
- Allow full query override for ES explain other
- Allow override of defType for explainOther in solr searcher
- Fixed issue with documents having no title causing splainer to blow up.
- Lots of work on breaking out highlighting into a better structure, after fighting with little fixes for a while.
- Highlighting on dates and integers in Solr causes an error. Work around is to append
hl.method=unified
to calls to Solr. #84 - a common pattern in Solr schemas is to normalize fields with dots:
foo.bar
, however if you have a array or dictionary of JSON, we want to navigate that. Now we check if the key exists with a dot in it, if not, we use that as a selector to pluck out the data in the nested JSON that we need. #83
- Fix rendering logic to handle Arrays and JSON objects so you don't get
"[object Object]"
in the UI. Another great fix by @CgamesPlay! - Migrate to Puppeteer for browser testing. No more PhantomJS. Lots of other dependencies cleaned up, and some legacy files from when this was a full blown app instead of a library removed.
package-lock.json
dropped from 9663 lines to 4788 lines.
- Allow http://username:password@example.com:9200/ in URL to work by converting to Authorization header for Elasticsearch. Thanks @CGamesPlay for fix.
- Support extracting media fields that have fieldspec media:
- This time with the
splainer-search.js
file!
- DO NOT USE THIS VERSION, we missed the compiled file from the package ;-)
- Remove compiled
splainer-search.js
from github
- Explain Other on ES 6 and 7 Broken.
- Fix for wildcard fieldspec in ES, allow * as a fieldspec
There was a hiatus up through 2.5.2 in maintaining this file.
- Remove Vagrant support from project.
- Support how ES 7 reports total docs found compared to how ES 6 and prior did.
- Bugfix: fixes bug when field name conflicts with url function name
- Bugfix: fixes formatting of json fields instead of returning [object Object]
- Bugfix: check for whether field name had a '.' was matching everything. D'oh!
- Adds support for neste fields
- Removes the requirement for a search engine version to support the different ways ES handles returning fields
- Support simple grouping in Solr
- Elasticsearch bulk search support
- Search validator to check URL for correct search results
- Elasticsearch support
- Support for Solr URL's without a protocol