{
"responseHeader": {
"status": 0,
"QTime": 32
},
"response": {
"numFound": 21,
"start": 0,
"docs": [
{
"description": "The matte finish waves on this wedding band contrast with the high polish borders. This sharp and elegant design was finely crafted in Japan.",
"UID_PK": "8252",
},
{
"description": "This elegant ring has an Akoya cultured pearl with a band of bezel-set round diamonds making it perfect for her to wear to work or the night out.",
"UID_PK": "8142",
},
]
},
"highlighting": {
"8252": {
"description": [
" and <em>elegant</em> design was finely crafted in Japan."
]
},
"8142": {
"description": [
"This <em>elegant</em> ring has an Akoya cultured pearl with a band of bezel-set round diamonds making"
]
},
}
}
This is JSON data I got from solr when i set hl=true and hl.fl=description. Here I got docs tag and highlighting tag. I need to parse highlighting tag to highlight “elegant” in description field which is in <em> tag…one more thing is UID_PK's(8252,8142) in <highlighting> are generated dynamically each time. Please suggest how can I do this if I am getting JSON data as
$.getJSON("http://192.168.1.9:8983/solr/db/select/?wt=json&&start=0&rows=20&q="+newquery+"&sort=price asc&hl=true&hl.fl=description&hl.usePhraseHighlighter=true&json.wrf=?", function(newresult){
and parsing it as
$.each(newresult.response.docs, function(i,item){
and
$.each(newresult.highlighting, function(i,hitem){
Assuming the response is always text and only the to be highlighted elements are enclosed in
<em>tags and there is only one of them, you could do this:This only works if
worddoes not contain nay special regular expression characters (in which case you’d have to escape them). If you know that the to be highlighted word only occurs once in the search results, you don’t have to use regex:DEMO