jquery - 如何在 Solr 查询分组中访问 groupedValue
问题描述
我在 Solr 查询中访问 groupValue 时遇到了一些问题。我想在 jquery 自动完成标签中显示 groupValue。但我做不到。谁能帮我做到这一点?
{
"responseHeader":{
"status":0,
"QTime":29,
"params":{
"q":"strSO:*",
"indent":"true",
"fl":"strSO",
"start":"0",
"rows":"2147483647",
"wt":"json",
"group.field":"strSO",
"group":"true"}},
"grouped":{
"strSO":{
"matches":112559,
"groups":[{
"groupValue":"EV11777-01",
"doclist":{"numFound":53,"start":0,"docs":[
{
"strSO":"EV11777-01"}]
}},
{
"groupValue":"EV15872-01",
"doclist":{"numFound":1829,"start":0,"docs":[
{
"strSO":"EV15872-01"}]
}},
{
"groupValue":"EV16143-02",
"doclist":{"numFound":929,"start":0,"docs":[
{
"strSO":"EV16143-02"}]
}},
这是我的jQuery代码
$(function() {
var URL_PREFIX = "http://localhost:8983/solr/archiveCore/select?group=true&group.field=strSO&rows=2147483647&q=strSO:";
var URL_SUFFIX = "&wt=json"; // facet.field=strSO&facet=on&rows=0";
$("#searchBoxstrSO").autocomplete({
source: function(request, response) {
var URL = URL_PREFIX + $("#searchBoxstrSO").val() + URL_SUFFIX;
$.ajax({
url: URL,
success: function(data) {
var docs = JSON.stringify(data.grouped.strSO.groups.groupValue);
var jsonData = JSON.parse(docs);
response($.map(jsonData, function(value, key) {
return {
label: value
}
}));
},
dataType: 'jsonp',
jsonp: 'json.wrf'
});
},
minLength: 0
})
});
$(function() {
var URL_PREFIX = "http://localhost:8983/solr/archiveCore/select?group=true&group.field=strSO&rows=2147483647&q=strSO:";
var URL_MIDDLE = "OR strSO_ngram:";
var URL_SUFFIX = "&wt=json"; // &facet.field=strSO&facet=on&rows=0"; // &facet.field=strSO&facet=on&rows=0 added
$("#ngramBoxstrSO").autocomplete({
source: function(request, response) {
var searchString = "\"" + $("#ngramBoxstrSO").val() + "\"";
var URL = URL_PREFIX + searchString + URL_MIDDLE +
searchString + URL_SUFFIX;
$.ajax({
url: URL,
success: function(data) {
var docs = JSON.stringify(data.grouped.strSO.groups.groupValue);;
var jsonData = JSON.parse(docs);
response($.map(jsonData, function(value, key) {
return {
label: value
}
}));
},
dataType: 'jsonp',
jsonp: 'json.wrf'
});
},
minLength: 0
})
});
有没有办法在 html 标签中显示它?或者我可以访问 doclist 的文档吗?这是我项目的最后一部分,如果我做对了,我会更开心的人:)
解决方案
您不需要使用 stringify 方法,因为它将 javascript 对象转换为字符串。只需确保从 ajax 响应中获取 JSON 对象即可。
var docs = data.grouped.strSO.groups;
$.map(docs, function(value, key) {
return { label: value.groupValue}
});
我的测试示例:
var data = {
"responseHeader":{
"status":0,
"QTime":29,
"params":{
"q":"strSO:*",
"indent":"true",
"fl":"strSO",
"start":"0",
"rows":"2147483647",
"wt":"json",
"group.field":"strSO",
"group":"true"}},
"grouped":{
"strSO":{
"matches":112559,
"groups":[{
"groupValue":"EV11777-01",
"doclist":{"numFound":53,"start":0,"docs":[
{
"strSO":"EV11777-01"}]
}},
{
"groupValue":"EV15872-01",
"doclist":{"numFound":1829,"start":0,"docs":[
{
"strSO":"EV15872-01"}]
}},
{
"groupValue":"EV16143-02",
"doclist":{"numFound":929,"start":0,"docs":[
{
"strSO":"EV16143-02"}]
}} ]}}};
var docs = data.grouped.strSO.groups;
var result = $.map(docs, function(value, key) {
return { label: value.groupValue}
});
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
推荐阅读
- php - 在 Hack PHP 中限制函数覆盖的不变式
- .net - 该模块应包含程序集清单 JNI4net 错误
- web-scraping - 使用 Node.js 抓取实时流媒体视频
- java - 试图复制一个数组,在我对原件进行排序之前对副本进行排序,然后在对原件进行排序时比较副本和原件
- vsto - 如何通过文本字段在 Excel VSTO 加载项中获取用户的数据范围输入?
- python - Openpyxl将列表项输入Excel电子表格列
- python - 如何使我的所有小部件具有相同的长度
- php - 向查询添加范围以根据首字母获取帖子
- sql - 如何将特定列值转换为 SQL 中一组值的标题?
- mysql - 在 MySQL 中为单行插入语句获取自动递增值