o19s / splainer Goto Github PK
View Code? Open in Web Editor NEWElasticsearch/Solr Sandbox for exploring explain information and tweaking
Home Page: http://splainer.io
License: Apache License 2.0
Elasticsearch/Solr Sandbox for exploring explain information and tweaking
Home Page: http://splainer.io
License: Apache License 2.0
I've been updating the TMDB example for Solr to use the lastest version (8.4.1) on this fork. Using that image seems to break all Splainer links example-link with a cryptic message "Error with your query. Double check that the URL is correct". Clicking the learn more in Solr link results in this:
0 7 text_all true true true all id title overview cast directors 10 true aouaoeuCRAZY_STRING!8_______ text_people_notf:"william shatner" 62362iueaiCRAZY_POST_STRING!_______ id title overview cast directors xml text_people_notf:"william shatner" text_people_notf:"william shatner" PhraseQuery(text_people_notf:"william shatner") text_people_notf:"william shatner" LuceneQParser 7.0 5.0 5.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
@worleydl has dug into this a little bit already and found that it works up until v8.2.0. He also noted that it might be related to SOLR-13982.
The site's language reflects it's original Solr specific support, and doesn't reflect that Elasticsearch has been supported for 3+ years.
Splainer for ES could easily be an Elasticsearch plugin. We need to figure out how to do this (preferably without having to create another git repo).
Link to splainer I think should point to splainer.io? Maybe preseeded with a URL to an public Solr?
Recieved the following email. Splainer doesn't have a way to escape & unfortunately
When trying to do a search for &, splainer seems to get a bit confused, encoding the ampersand and then splitting on the & in the search args:
&hl.snippets=3 &start=0 &facet.sort=count &q= & &group.sort=score+desc &group=true
So, I end up with an empty &q=โฆ
Any possible workaround for this?
Hi,
I wanted to experiment with Splainer with Elasticsearch, but I am struggling to make it connect to ES.
With http://splainer.io/ and running local splainer app I face the same problem:
"Error with your query. Double check that the URL is correct.
Network Error! (host not found)
or CORS needs to be configured for your Elasticsearch
Enable CORS in elasticsearch.yml:
http.cors.allow-origin: "/https?://(.*?.)?(quepid.com|splainer.io)/"http.cors.enabled: true"
My relevant elasticsearch.yml configuration:
http.cors.allow-origin: ""
http.cors.enabled: true
I needed the "" to let kibana to connect.
I also tried to set other CORS configuration, but they did not help:
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"
Elasticsearch version: 2.3.1
Thanks for your help in advance.
Szabolcs
whichEngine gets set on load but doesn't appear to update as the user clicks around the app. Currently this can cause erratic behavior with the explain other functionality. This issue will go away when feature/enable-es-other is merged up but I'd like to get the underlying fix in before doing that to prevent future issues if we add other search engines.
Gotta love Solr's great error messages. If highlighting is not enabled and you set hl=true, according to Ralph Tice on the Solr mailing list you get a NullPointerException trying to use the highlight component (and from Splainer's PoV an HTTP 500)
Perhaps we should retry the query without hl=true etc when we get a 500
Right now when you bring up Splainer, you are prompted in grey text to put in a link. However, we have live ES and Solr servers, so lets just plop those in. Remove the "Hey, I need to find my ES or Solr server first to try this out" and help folks trial Splainer quicker.
The Splainer stopped working with a localhost due to recent changes in Chrome around security - CORS, for both Solr and Elasticsearch.
However, the error message says it's a network error and CORS needs to be configured.
It's worth either to fix the issue or change the error message or stop supporting Chrome.
The Firefox works just fine.
My chrome version is: 96.0.4664.45
docker run immediately exits (0). rebuilt image locally after uncommenting last line (CMD) and it works. consider resolving issue in repo and docker hub.
thx!
The splainer.io website is up to date? I can access nested properties in development, but not in production.
Often people will paste in a URL without a fl. The current behavior is to only show the id. This is fairly confusing, and new users can't relate to what they are seeing out of Splainer. This probably should be reversed -- show more content so that they can easily recognize what's there. Let the user widdle it down.
We'd probably need a different interface to support field collpasing. At least give an error message that its not supported.
Using Elasticsearch w/ the JSON editor. If you open a link in Safari, then try to edit the query in the settings, the cursor does not type where it appears. Seems to work fine in Chrome.
For issues like #7 it would be nice to have source maps.
I have been using splainer.io for a while now and its an amazing tool for troubleshooting solr queries.
In past week, when i was trying to connect to one of our solr instances (only accessible via specific ips), the splainer unable to connect. The same link is opening all okay when i try to connect to in new tab in the same browser. Due to security reasons, i can not share the exact url but this setup was working all okay earlier. I have enclosed the screenshot to highlight the issue.
Hello,
I am now getting the below error when I use the publicly available splainer.io site to reference a ES 5.4 instance. It appears that the query is being parsed incorrectly by splainer.io as the multi-match fields query is the one being flagged.
Per discussions with @epugh it appears that splainer is using an older version of the plainer-search library and that referencing a new version of this library may resolve this issue.
Also, it should be noted that we have previously been successfully using the public splainer.io site to successfully interact with our ES instance and that this issue is new.
error:
HTTP Error: 400 Bad Request
{
"root_cause": [
{
"type": "parsing_exception",
"reason": "Deprecated field [fields] used, expected [stored_fields] instead",
"line": 1,
"col": 2031
}
],
"type": "parsing_exception",
"reason": "Deprecated field [fields] used, expected [stored_fields] instead",
"line": 1,
"col": 2031
}
query:
{
"size": 100,
"from": 0,
"_source": [
"id",
"jobId",
"summary",
"title",
"sectorPaths",
"refreshDate",
"locationCity",
"locationCountry",
"locationAdminDistrict",
"locationRegion",
"locationCityFormatted",
"jobDetailsUrl",
"title",
"clientBrandName",
"locationCity",
"locationAdminDistrict",
"clientBrandId",
"positionId",
"salaryDescription",
"clientBrandId",
"companyLogoUrl",
"positionId",
"clientBrandName",
"employmentTypeId",
"employmentTypeIds",
"salaryBandId",
"yearsExperienceBandId",
"isHighlighted",
"score"
],
"query": {
"function_score": {
"query": {
"bool": {
"must": {
"multi_match": {
"query": "full stack developer",
"fields": [
"idx_title_en^50",
"idx_title_en.graded_a^40",
"idx_title_en.graded_b^20",
"idx_title_en.graded_c^0.75",
"idx_title_en.graded_d^0.5",
"idx_description_en^1",
"idx_summary_en^1.5",
"companyDisplayName^1",
"skills",
"title^0.5",
"title.graded_a^0.4",
"title.graded_b^0.2",
"title.graded_c^0.007",
"title.graded_d^0.005",
"indexedSummary^0.3",
"description^0.1"
],
"minimum_should_match": "2<50%",
"type": "most_fields",
"zero_terms_query": "all"
}
},
"must_not": [
{
"match_none": {}
}
],
"filter": [
{
"match_all": {}
},
{
"geo_distance": {
"distance": "30mi",
"locationLatLon": "29.7604267, -95.3698028"
}
}
],
"should": [
{
"multi_match": {
"minimum_should_match": "3<75%",
"query": "full stack developer",
"fields": [
"idx_title_en^50",
"idx_title_en.graded_a^40",
"idx_title_en.graded_b^20",
"idx_description_en^1",
"idx_summary_en^1.5",
"companyDisplayName^1"
],
"use_dis_max": "true",
"slop": "2",
"type": "phrase"
}
},
{
"multi_match": {
"query": "full stack developer",
"fields": [
"idx_title_en.shingle^50",
"idx_description_en.shingle^1",
"idx_summary_en.shingle^1.5",
"companyDisplayName.shingle^1",
"skills.shingle",
"indexedSummary.shingle^0.3",
"description.shingle^0.1"
],
"minimum_should_match": "2<50%",
"type": "most_fields",
"zero_terms_query": "all"
}
}
]
}
},
"functions": [
{
"filter": {
"exists": {
"field": "locationLatLon"
}
},
"exp": {
"locationLatLon": {
"origin": "29.7604267, -95.3698028",
"scale": "20mi",
"offset": "10mi",
"decay": 0.8
}
},
"weight": 2
},
{
"exp": {
"refreshDate": {
"scale": "180d",
"decay": 0.65
}
},
"weight": 1.2
}
]
}
}
}
We currently have the "explain other" feature disabled for Elasticsearch. Splainer-search supports this, so we should turn it on at some point.
Its often useful to see the statistics driving a match's score. Basically, to lay the TF*IDF calculation bare for the user. We have some code that parses out this information (everithing under "weight")
"description":"weight(catch_line:deer in 17282) [DefaultSimilarity], result of:",
"details":[{
"match":true,
"value":2.6603017,
"description":"fieldWeight in 17282, product of:",
"details":[{
"match":true,
"value":1.0,
"description":"tf(freq=1.0), with freq of:",
"details":[{
"match":true,
"value":1.0,
"description":"termFreq=1.0"}]},
{
"match":true,
"value":8.512965,
"description":"idf(docFreq=10, maxDocs=20148)"},
{
"match":true,
"value":0.3125,
"description":"fieldNorm(doc=17282)"}]}]}
We need to display it. Likely as a hover over each match that breaks down the strength of the match in terms of the calculation above.
as per your business partner Eric P. i was instructed to write this here.
we would like an option that presents percentage numbers next to the thermometer bars that display the weight each search term has
were having problems adding it to the stackedChart.js
file.
thank you!
We should have some basic documentation to help folks. Or perhaps a walkthrough.
Specifically, the "displayed fields" area mostly works like fl, however you can prefix modifiers like "id:" (this field is the id field) or "title:" (this field is a title)
You can click into the detailed explain of one doc and fill in a Solr query. This will pull back missing documents and explain why they're not scored as highly. Very useful, but this feature needs to be cleaned up before blogging about it.
Stuff like
Thank you for this cool project!
I've tried it with our Solr 9.1 installation, but I am getting a JavaScript error regarding X-Content-Type-Options: nosniff and Mime-Type text/plain confliect in the browser console.
Did I miss something? I am really not sure how to debug this issue. If I could track down the root cause, I'd love to submit a PR with a fix!
Thank you,
Mirko
promise.js
was removed from the splainer-search
library, and is not used in Quepid. It still is used in three places in this project. We'd like to remove it completely, as it appears to make "grunt test" fail, somethign about the browser runing the tests dones't work. Removing promise.js
makes the tests run, but many fail due to Promise.create()
being needed!
Remove some Tech Debt!!!
On the splainer.io site the default ES query JSON no longer works. The _all
is no longer used.
Example query:
http://localhost:8983/solr/zSlide18/select?defType=edismax&q=George&mm=100%
Parse:
defType=edismax
&q=George
&mm=100%25
When given a url to a template query rather than an ordinary search (e.g., movies/_search/template) splainer puts the '_source' key for selecting displayed fields in the wrong place, resulting in a 400 response with a cryptic message. This could be fixed by identifying from the url that the query is a template query and responding accordingly.
We show an array of length 1. (Does Solr always return an array on MV fields). And for some reason highlighting doesn't work in the case that I saw. This is ok, but we should be able to do better.
Not all fields from the o19s/es-tmdb
repo are present (cast is an example). Is this due to people defacing the instance? Should we move it behind a proper proxy
Having the quepid developer settings is nice, but if you are going back-and-forth between different quepid cases or juts using straight-up solr admin, it is easier to plop in the whole url.
Just as Quepid has a configuration option to support ES 5 vs 2, w should add that here. Here's what we should do
0.x-2.x
. or 5.0+
next to the "URL" box. It should be unselected at first, but mandatory that it is selected.esVer
to the splainer URL so I can send a URL to a friend so they can see the same results I seeWhen using the unified highlighter, splainer will automatically add all fields to both the fl list AND the hl.fl list. When using pseudofields (such as 'f:$dateBoost') in the Displayed Fields for Splainer, the highlighter does not see the pseudofield, and it throws a missing field exception.
We run the latest version of splainer in a local docker container and try to send request to our solr which runs on localhost:8983. Currently we have collections in german and french and depending on the documents we use different requesthandlers. Depending on the documents, we basically have two different setups. For both setups, I see the results of the call in the debugging window, but only for one setup are the results filled in. For the other setup, only '0' are displayed with no further information. Unfortunately, I could not locate the difference in the responses which lead to the issue.
Browser: Firefox 100.0
Solr: 8.11.1
Here is the specification for the working requesthandler of the functioning collection:
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="wt">json</str>
<str name="defType">edismax</str>
<str name="qf">
keywords_exact^100
keywords_sharp^10
keywords
</str>
<str name="sow">false</str>
<str name="df">text</str>
<str name="q.alt">*:*</str>
<str name="rows">10</str>
<str name="fl">id</str>
<!-- Faceting defaults -->
<str name="facet">off</str>
</lst>
</requestHandler>
and got the following response
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":0,
"params":{
"q":"maison",
"json.wrf":"angular.callbacks._9",
"debug":"true",
"hl":"false",
"fl":"id id keywords_exact",
"rows":["5",
"10"],
"wt":"json",
"debug.explain.structured":"true"}},
"response":{"numFound":7,"start":0,"numFoundExact":true,"docs":[
{
"id":"blta2e4ef16455f1915",
"keywords_exact":"cheveux, coloration, teinture, foncer, syoss, brillance, hommes, couverture, cheveux blancs, รฉclaircir, maison, racines, dissimuler, rouge, brun, noir, cuivre, couleur des cheveux, colorations, couleurs, teintures, coiffeur, teinture des cheveux, coloration des cheveux, schwarzkopf"},
{
"id":"blt7408631a0c78bdff",
"keywords_exact":"purificateur d'air, humidificateur, pollen, allergies, filtres, filtre ร charbon actif, รฉvaporateur, laveuse d'air, filtre ร air, Aha, Ecarf, air respirable, santรฉ, air sain, air frais, air pur, particules, particules de poussiรจre, polluants, air ambiant, maison, salon, chambre, chambre d'enfants, enfants, qualitรฉ de l'air, poils d'animaux, poussiรจre domestique, moisissure, moisissures, poussiรจre fine, rhume des foins, asthme, spores, humiditรฉ, climatiseurs, Purificateur d'air, Humidificateur d'air"},
{
"id":"blt4bfc0c1335cd43b6"},
{
"id":"blt4be2b8027db749db"},
{
"id":"blt3945710940a87861"}]
},
"debug":{
"rawquerystring":"maison",
"querystring":"maison",
"parsedquery":"+DisjunctionMaxQuery(((keywords_exact:maison)^100.0 | keywords:maison | (keywords_sharp:maison)^10.0))",
"parsedquery_toString":"+((keywords_exact:maison)^100.0 | keywords:maison | (keywords_sharp:maison)^10.0)",
"explain":{
"blta2e4ef16455f1915":{
"match":true,
"value":251.82678,
"description":"max of:",
"details":[{
"match":true,
"value":251.82678,
"description":"weight(keywords_exact:maison in 118) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":251.82678,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":100.0,
"description":"boost"},
{
"match":true,
"value":5.152135,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":2,
"description":"n, number of documents containing term"},
{
"match":true,
"value":431,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.48878145,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":25.0,
"description":"dl, length of field"},
{
"match":true,
"value":30.164734,
"description":"avgdl, average length of field"}]}]}]}]},
"blt7408631a0c78bdff":{
"match":true,
"value":211.6932,
"description":"max of:",
"details":[{
"match":true,
"value":211.6932,
"description":"weight(keywords_exact:maison in 2) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":211.6932,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":100.0,
"description":"boost"},
{
"match":true,
"value":5.152135,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":2,
"description":"n, number of documents containing term"},
{
"match":true,
"value":431,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.41088444,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":38.0,
"description":"dl, length of field"},
{
"match":true,
"value":30.164734,
"description":"avgdl, average length of field"}]}]}]}]},
"blt4bfc0c1335cd43b6":{
"match":true,
"value":33.901108,
"description":"max of:",
"details":[{
"match":true,
"value":2.863626,
"description":"weight(keywords:maison in 575) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":2.863626,
"description":"score(freq=4.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":3.1155336,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":5,
"description":"n, number of documents containing term"},
{
"match":true,
"value":123,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.91914463,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":4.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":12.0,
"description":"dl, length of field"},
{
"match":true,
"value":208.20325,
"description":"avgdl, average length of field"}]}]}]},
{
"match":true,
"value":33.901108,
"description":"weight(keywords_sharp:maison in 575) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":33.901108,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":10.0,
"description":"boost"},
{
"match":true,
"value":4.4308167,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":1,
"description":"n, number of documents containing term"},
{
"match":true,
"value":125,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.765121,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":1.0,
"description":"dl, length of field"},
{
"match":true,
"value":128.888,
"description":"avgdl, average length of field"}]}]}]}]},
"blt4be2b8027db749db":{
"match":true,
"value":2.8175404,
"description":"max of:",
"details":[{
"match":true,
"value":2.8175404,
"description":"weight(keywords:maison in 581) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":2.8175404,
"description":"score(freq=3.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":3.1155336,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":5,
"description":"n, number of documents containing term"},
{
"match":true,
"value":123,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.9043524,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":3.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":4.0,
"description":"dl, length of field"},
{
"match":true,
"value":208.20325,
"description":"avgdl, average length of field"}]}]}]}]},
"blt3945710940a87861":{
"match":true,
"value":2.8175404,
"description":"max of:",
"details":[{
"match":true,
"value":2.8175404,
"description":"weight(keywords:maison in 582) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":2.8175404,
"description":"score(freq=3.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":3.1155336,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":5,
"description":"n, number of documents containing term"},
{
"match":true,
"value":123,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.9043524,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":3.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":4.0,
"description":"dl, length of field"},
{
"match":true,
"value":208.20325,
"description":"avgdl, average length of field"}]}]}]}]}},
"QParser":"ExtendedDismaxQParser",
"altquerystring":null,
"boost_queries":null,
"parsed_boost_queries":[],
"boostfuncs":null,
"timing":{
"time":0.0,
"prepare":{
"time":0.0,
"query":{
"time":0.0},
"facet":{
"time":0.0},
"facet_module":{
"time":0.0},
"mlt":{
"time":0.0},
"highlight":{
"time":0.0},
"stats":{
"time":0.0},
"expand":{
"time":0.0},
"terms":{
"time":0.0},
"debug":{
"time":0.0}},
"process":{
"time":0.0,
"query":{
"time":0.0},
"facet":{
"time":0.0},
"facet_module":{
"time":0.0},
"mlt":{
"time":0.0},
"highlight":{
"time":0.0},
"stats":{
"time":0.0},
"expand":{
"time":0.0},
"terms":{
"time":0.0},
"debug":{
"time":0.0}}}}}
The website view looks like this:
This is the requesthandler for this collection:
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="wt">json</str>
<str name="defType">edismax</str>
<str name="qf">
nameWithoutManufacturer^67
productName^10 <!-- new -->
tags^71
subtitle^5 <!-- new -->
productTypePimList^10 <!-- new -->
manufacturerName^100
attributesStemmed^0.005 <!-- new -->
attributesStemmedLowPriority^0.001 <!-- new -->
attributesUnstemmed^0.005 <!-- new -->
attributesUnstemmedLowPriority^0.001 <!-- new -->
productNameAddon^0.001 <!-- new -->
model<!-- new -->
attributesUnclassified^0.0001 <!-- new -->
sku
skus
manufacturerProductId
manufacturerProductIds
ean
eans
</str>
<str name="sow">true</str>
<str name="tie">0.9</str>
<str name="mm">100%</str>
<str name="q.alt">*:*</str>
<str name="rows">50</str>
<str name="fl">sku,skus</str>
<!-- Faceting defaults -->
<str name="facet">on</str>
<str name="facet.missing">false</str>
<str name="facet.mincount">1</str>
<str name="facet.limit">700</str>
<!-- Spell Checking defaults -->
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck.dictionary">freq</str>
<str name="spellcheck">false</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">3</str>
<str name="spellcheck.alternativeTermCount">2</str>
<str name="spellcheck.maxResultsForSuggest">3</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">5</str>
<str name="spellcheck.onlyMorePopular">false</str>
<str name="spellcheck.maxCollations">3</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
and this is the response:
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":5,
"params":{
"q":"family",
"Art":"trade",
"json.wrf":"angular.callbacks._a",
"debug":"true",
"hl":"false",
"fl":"id sku name boostCount_checkouts",
"rows":["5",
"10"],
"wt":"json",
"debug.explain.structured":"true"}},
"response":{"numFound":4,"start":0,"numFoundExact":true,"docs":[
{
"sku":"749234",
"name":"Reisenthel Sac Family Red Rouge",
"boostCount_checkouts":1},
{
"sku":"749237",
"name":"Reisenthel Sac Family Black Noir",
"boostCount_checkouts":0},
{
"sku":"749235",
"name":"Reisenthel Sac Family Navy Bleu",
"boostCount_checkouts":0},
{
"sku":"993485",
"name":"Gastroback Raclette Fondue Set Family and Friends",
"boostCount_checkouts":0}]
},
"facet_counts":{
"facet_queries":{},
"facet_fields":{},
"facet_ranges":{},
"facet_intervals":{},
"facet_heatmaps":{}},
"debug":{
"rawquerystring":"family",
"querystring":"family",
"parsedquery":"+DisjunctionMaxQuery(((attributesStemmedLowPriority:family)^0.001 | (attributesUnstemmed:family)^0.005 | skus:family | (manufacturerName:family)^100.0 | manufacturerProductIds:family | (productName:family)^10.0 | eans:family | (tags:family)^71.0 | (productNameAddon:family)^0.001 | ean:family | (productTypePimList:family)^10.0 | manufacturerProductId:family | (subtitle:family)^5.0 | (nameWithoutManufacturer:family)^67.0 | model:family | (attributesUnclassified:family)^1.0E-4 | sku:family | (attributesStemmed:family)^0.005 | (attributesUnstemmedLowPriority:family)^0.001)~0.9)",
"parsedquery_toString":"+((attributesStemmedLowPriority:family)^0.001 | (attributesUnstemmed:family)^0.005 | skus:family | (manufacturerName:family)^100.0 | manufacturerProductIds:family | (productName:family)^10.0 | eans:family | (tags:family)^71.0 | (productNameAddon:family)^0.001 | ean:family | (productTypePimList:family)^10.0 | manufacturerProductId:family | (subtitle:family)^5.0 | (nameWithoutManufacturer:family)^67.0 | model:family | (attributesUnclassified:family)^1.0E-4 | sku:family | (attributesStemmed:family)^0.005 | (attributesUnstemmedLowPriority:family)^0.001)~0.9",
"explain":{
"749234":{
"match":true,
"value":365.41138,
"description":"max plus 0.9 times others of:",
"details":[{
"match":true,
"value":40.911392,
"description":"weight(productName:family in 7) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":40.911392,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":10.0,
"description":"boost"},
{
"match":true,
"value":8.052119,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":14131,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.5080823,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":2.0,
"description":"dl, length of field"},
{
"match":true,
"value":2.6938646,
"description":"avgdl, average length of field"}]}]}]},
{
"match":true,
"value":323.1938,
"description":"weight(nameWithoutManufacturer:family in 7) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":323.1938,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":67.0,
"description":"boost"},
{
"match":true,
"value":8.159629,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":15735,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.5911774,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":4.0,
"description":"dl, length of field"},
{
"match":true,
"value":9.194471,
"description":"avgdl, average length of field"}]}]}]},
{
"match":true,
"value":5.9970293,
"description":"weight(model:family in 7) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":5.9970293,
"description":"score(freq=2.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":8.159629,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":15735,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.7349634,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":2.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":10.0,
"description":"dl, length of field"},
{
"match":true,
"value":21.366318,
"description":"avgdl, average length of field"}]}]}]}]},
"749237":{
"match":true,
"value":365.41138,
"description":"max plus 0.9 times others of:",
"details":[{
"match":true,
"value":40.911392,
"description":"weight(productName:family in 9) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":40.911392,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":10.0,
"description":"boost"},
{
"match":true,
"value":8.052119,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":14131,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.5080823,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":2.0,
"description":"dl, length of field"},
{
"match":true,
"value":2.6938646,
"description":"avgdl, average length of field"}]}]}]},
{
"match":true,
"value":323.1938,
"description":"weight(nameWithoutManufacturer:family in 9) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":323.1938,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":67.0,
"description":"boost"},
{
"match":true,
"value":8.159629,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":15735,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.5911774,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":4.0,
"description":"dl, length of field"},
{
"match":true,
"value":9.194471,
"description":"avgdl, average length of field"}]}]}]},
{
"match":true,
"value":5.9970293,
"description":"weight(model:family in 9) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":5.9970293,
"description":"score(freq=2.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":8.159629,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":15735,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.7349634,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":2.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":10.0,
"description":"dl, length of field"},
{
"match":true,
"value":21.366318,
"description":"avgdl, average length of field"}]}]}]}]},
"749235":{
"match":true,
"value":365.41138,
"description":"max plus 0.9 times others of:",
"details":[{
"match":true,
"value":40.911392,
"description":"weight(productName:family in 9856) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":40.911392,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":10.0,
"description":"boost"},
{
"match":true,
"value":8.052119,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":14131,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.5080823,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":2.0,
"description":"dl, length of field"},
{
"match":true,
"value":2.6938646,
"description":"avgdl, average length of field"}]}]}]},
{
"match":true,
"value":323.1938,
"description":"weight(nameWithoutManufacturer:family in 9856) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":323.1938,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":67.0,
"description":"boost"},
{
"match":true,
"value":8.159629,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":15735,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.5911774,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":4.0,
"description":"dl, length of field"},
{
"match":true,
"value":9.194471,
"description":"avgdl, average length of field"}]}]}]},
{
"match":true,
"value":5.9970293,
"description":"weight(model:family in 9856) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":5.9970293,
"description":"score(freq=2.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":8.159629,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":15735,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.7349634,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":2.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":10.0,
"description":"dl, length of field"},
{
"match":true,
"value":21.366318,
"description":"avgdl, average length of field"}]}]}]}]},
"993485":{
"match":true,
"value":316.75687,
"description":"max plus 0.9 times others of:",
"details":[{
"match":true,
"value":24.36673,
"description":"weight(productName:family in 6407) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":24.36673,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":10.0,
"description":"boost"},
{
"match":true,
"value":8.052119,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":14131,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.3026126,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":6.0,
"description":"dl, length of field"},
{
"match":true,
"value":2.6938646,
"description":"avgdl, average length of field"}]}]}]},
{
"match":true,
"value":289.669,
"description":"weight(nameWithoutManufacturer:family in 6407) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":289.669,
"description":"score(freq=1.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":67.0,
"description":"boost"},
{
"match":true,
"value":8.159629,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":15735,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.5298548,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":1.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":6.0,
"description":"dl, length of field"},
{
"match":true,
"value":9.194471,
"description":"avgdl, average length of field"}]}]}]},
{
"match":true,
"value":5.7309,
"description":"weight(model:family in 6407) [SchemaSimilarity], result of:",
"details":[{
"match":true,
"value":5.7309,
"description":"score(freq=2.0), computed as boost * idf * tf from:",
"details":[{
"match":true,
"value":8.159629,
"description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
"details":[{
"match":true,
"value":4,
"description":"n, number of documents containing term"},
{
"match":true,
"value":15735,
"description":"N, total number of documents with field"}]},
{
"match":true,
"value":0.7023481,
"description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
"details":[{
"match":true,
"value":2.0,
"description":"freq, occurrences of term within document"},
{
"match":true,
"value":1.2,
"description":"k1, term saturation parameter"},
{
"match":true,
"value":0.75,
"description":"b, length normalization parameter"},
{
"match":true,
"value":13.0,
"description":"dl, length of field"},
{
"match":true,
"value":21.366318,
"description":"avgdl, average length of field"}]}]}]}]}},
"facet-debug":{
"elapse":0,
"sub-facet":[{
"processor":"SimpleFacets",
"elapse":0,
"action":"field facet"}]},
"QParser":"ExtendedDismaxQParser",
"altquerystring":null,
"boost_queries":null,
"parsed_boost_queries":[],
"boostfuncs":null,
"timing":{
"time":3.0,
"prepare":{
"time":0.0,
"query":{
"time":0.0},
"facet":{
"time":0.0},
"facet_module":{
"time":0.0},
"mlt":{
"time":0.0},
"highlight":{
"time":0.0},
"stats":{
"time":0.0},
"expand":{
"time":0.0},
"terms":{
"time":0.0},
"spellcheck":{
"time":0.0},
"debug":{
"time":0.0}},
"process":{
"time":2.0,
"query":{
"time":0.0},
"facet":{
"time":0.0},
"facet_module":{
"time":0.0},
"mlt":{
"time":0.0},
"highlight":{
"time":0.0},
"stats":{
"time":0.0},
"expand":{
"time":0.0},
"terms":{
"time":0.0},
"spellcheck":{
"time":0.0},
"debug":{
"time":2.0}}}}}
The website view for this collection looks like this
We would expect that the results of the query get filled into the website the same way they are in the working collection.
Thank you very much for your help :)
To be fixed in the AM
I'm attempting to build a fresh image and getting the following error:
Selecting previously unselected package google-chrome-unstable.
(Reading database ... 29794 files and directories currently installed.)
Preparing to unpack google-chrome-unstable_current_amd64.deb ...
Unpacking google-chrome-unstable (81.0.4044.9-1) ...
Processing triggers for mime-support (3.60) ...
dpkg: dependency problems prevent configuration of google-chrome-unstable:
google-chrome-unstable depends on libdrm2 (>= 2.4.38); however:
Package libdrm2 is not installed.
google-chrome-unstable depends on libgbm1 (>= 8.1~0); however:
Package libgbm1 is not installed.
google-chrome-unstable depends on libxcb-dri3-0; however:
Package libxcb-dri3-0 is not installed.
dpkg: error processing package google-chrome-unstable (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
google-chrome-unstable
Do we need chrome as part of the Docker image? We may be able to copy the setup from quepid.
I was dinking around with Elasticsearch support a while back.
Open issue, is Elasticsearch under http://splainer.io as a checkbox, or create http://splainer.es for a more Elasticsearch focused user experience?
Could we get a Dockerfile for this repo?
But does work for ES!
We assume that the unique id is "id". This could be entirely wrong, though its a reasonable default. If "id" can't be found in the response, we should prompt the user to specify id field.
Current workaround, type "id:<alt_id_field_name>" in "Displayed Fields"
snip = escapeHtml(subFieldValue.slice(0, 200)); It takes our Array and smashes it into a string.
I wonder why we do this snip? It's a method of getHighlightSnippet(), which I think we are trying to get away from. Lets not do highlighting unless I specified I wanted it to be highlighted!
Is this related to the // TODO: In a future refactor just compute the snippets and store them out, don't use a function call in the template comment in docRow.js?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.