0

Web アプリの検索テキスト フィールドにクエリを入力し、特定のテキストを含む各ドキュメントから強調表示された結果を返せるようにする必要があります。問題は、すべてのドキュメントを表示する応答が得られず、1 つしか表示されないことです。

doc1、doc2、doc3、doc4 などの ID を持つ 4 つのドキュメントがあるとします。コードをループして、1 つだけでなく 4 つのドキュメントすべてのコンテンツを表示するにはどうすればよいですか。doc2 をプログラムにハードコードして動作させましたが、ループ処理に問題があります。

Ext.data.JsonP.request({
url: 'http://localhost:8983/solr/collection1/select?q='+searchValue+'&wt=json&indent=true&hl=true&hl.fl=content&hl.simple.pre=%3Cem%3E&hl.simple.post=%3C%2Fem%3E',
callbackKey: "json.wrf",

success: function( res, req ) {
    for (i=0; i<res.response.numFound; i++) {
        var docId = res.response.docs[i].id;

        //This returns all ids. ex. doc1, doc2 etc.
        alert(docId);


        htmlCode += "<h4>Your search term: "+searchValue+"</h4><p>"+res.highlighting.doc2.content+"</p>";

    }

    //Print code below -- irrelevant for the question.
} 
4

2 に答える 2

0

この投稿からそれを理解しました:名前がわからない場合、javascriptオブジェクトのプロパティにアクセスするにはどうすればよいですか?

これを for ループに含めて、機能させました。

 var hl = res.highlighting;
 var content="";
 Object.keys(hl).forEach(function (key) {
     if(key == docId) {
         content = hl[key].content;
     }
 });
于 2013-06-19T17:44:37.863 に答える
0

res.response.docsコレクションを直接反復することができます。

例: JQuery JSON の例

$.each(data.response.docs, function(key, element){
    console.log(element.id);
});
于 2013-06-14T04:12:25.327 に答える