7

Apache Solr は、そのエンドポイントに送信される GET パラメーターの 1 つが重複した名前であることを要求します。

facet.range=price&facet.range=age

ドキュメントはこちら:

http://wiki.apache.org/solr/SimpleFacetParameters#facet.range

facet.rangejQuery で、そのクエリ文字列パラメーター ( ) を 2 回含めるにはどうすればよいですか? 重複したキーを持つオブジェクトを作成することはできませんが、これは私がする必要があることの行に沿っています:

context = {
    'facet.range': 'price',
    'facet.range': 'age', // This will be the only element in this dictionary as the key names are the same
}

$.ajax({
    type: "get",
    url: 'http://127.0.0.1:8983/solr/select',
    dataType:"jsonp",
    contentTypeString: 'application/json',
    jsonp:"json.wrf",
    data: context,
    success:function (data) {
        ...
    }
});
4

5 に答える 5

13

'facet.range': ['price', 'age']params オブジェクトで使用しtraditional、ajax 呼び出しで true に設定して、パラメーターの「従来の」シリアル化を強制しfoo=1&foo=2ますfoo[]=1&foo[]=2

于 2012-09-21T14:35:24.657 に答える
3

jQuery はフォームのシリアル化に内部的に使用する$.paramため、同じことができます。

data = $.param(
    { name: 'facet.range', value: 'price' }, 
    { name: 'facet.range', value: 'age' }
)
于 2012-09-21T14:34:56.370 に答える
2

URL に引数を手動で追加できます。

   $.ajax({
       type: "get",
       url: 'http://127.0.0.1:8983/solr/select?facet.range=price&facet.range=age', // Add other parameters in the url
       dataType:"jsonp",
       contentTypeString: 'application/json',
       jsonp:"json.wrf",
       success:function (data) {
           ...
       }
   });
于 2012-09-21T14:26:26.110 に答える
0

それを回避する唯一の方法は、データを渡す代わりに、データをクエリ文字列パラメーターとして「ハードコード」することだと思います

$.ajax({
    type: "get",
    url: 'http://127.0.0.1:8983/solr/select?facet.range=price&facet.range=age',
    dataType:"jsonp",
    contentTypeString: 'application/json',
    jsonp:"json.wrf",
    data: null,
    success:function (data) {
        ...
    }
});
于 2012-09-21T14:26:27.757 に答える
-1

私はApacheSolrに慣れていませんが、URLを再作成してパラメーターを渡すことができます。

$.ajax({
    type: "get",
    url: 'http://127.0.0.1:8983/solr/select?'+ "facet.range=price&facet.range=age",
    success:function (data) {
        ...
    }
});
于 2012-09-21T14:29:56.207 に答える