4

そのため、多くのsolrインスタンスを実行していて、検索を送信するために、簡単なWebサイトをまとめました。リクエストURLを作成した後、phpで次を使用してsolrからXML応答を取得します。

    $solr_return= file_get_contents($full_request_URL);

これで、応答は単純なxml形式ではなく、私が何を意味するかを知っていれば、応答は解決されます。返されたxmlを解析して、htmlのテーブルの行に表示できるようにしたいと思います。

私はオンラインで探していましたが、私は完全にオフになっているのではないかと思わせるさまざまなアイデアがありますが、これはそれを行う方法ではありません。あなたが私だったらどうしますか?

のxmlは$solr_return次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">95</int>
  <lst name="params">
    <str name="indent">true</str>
    <str name="rows">10</str>
    <str name="start">0</str>
    <str name="q">*:*</str>
    <str name="shards">some shards here</str>
  </lst>
</lst>
<result name="response" numFound="2403043" start="0">
  <doc>
    <str name="1">test1</str>
    <str name="2">test2</str>
    <str name="3">test3</str>
  </doc>
  <doc>
    <str name="1">test1</str>
    <str name="2">test2</str>
    <str name="3">test3</str>
  </doc>
</result>
</response>

この例では、1、2、および3の3つの列と、test1、test2、およびtest3の2つの行を持つテーブルを表示します。

よろしくお願いします。

4

2 に答える 2

5

最も簡単な方法は&wt=php、Solr 要求 URL に追加し、実行eval()して結果を配列に割り当てることです (Solr サーバーが悪意のあるコードを送り返さないことを信頼していると仮定します)。その後、Solr の結果は通常の PHP 配列になり、必要に応じて操作できます。

または、最後に追加&wt=jsonし、JSON 形式で結果を取得してjson_decode()から、返された文字列を PHP で実行して PHP 配列に変換することもできます。

于 2012-07-26T01:15:45.153 に答える
0

これを試して:

<?php
$solr_return = file_get_contents($full_request_URL);
$solr_return = simplexml_load_string($solr_return);
$xpath = $solr_return->xpath( '//result/doc' );

$rowCols = array();
if( count( $xpath ) > 0 ) {
    foreach( $xpath as $key => $value ) {
        if( !isset ( $rowCols[ $key ] ) ) {
            $rowCols[ $key ] = '<tr>';
        }

        foreach( $value as $k => $v ) {
            $rowCols[ $key ] .= '<td>' . $v . '</td>';
        }

        $rowCols[ $key ] .= '</tr>';
    }
}     else {
    $rowCols[] = '<tr><td colspan="3"></td></tr>'
    }
$rowCols = implode( '', $rowCols);
?>
<html>
<head></head>
<body>
<table border="0" width="50%" cellpadding="2" cellspacing-="3">
<tbody>
<?php echo $rowCols;?>
</tbody>
</table>
</body>
</html>

お役に立てれば。

于 2012-07-26T06:48:08.927 に答える