1

solr の debug-mode Explain 機能のデフォルトの「人間が読める」形式は、まったく役に立ちません。debug.explain.structured=true を渡すことで、構造化された xml 出力を取得できます。

ただし、それが生成する xml も実際には使用できないため、このデバッグ情報をコードの他の場所で使用できるようにする必要があります。

車輪を再発明する前に、2 つの質問があります。

1)このxmlを解析して有用なオブジェクトに変換する既存のPHPクラス(または関数)を知っている人はいますか? (グーグルで調べても明らかなものは見つかりませんでした)

2) SOLR のデバッグ モードに精通している場合、debug.explain.structured xml を解析するよりも、これにアプローチするより良い方法はありますか?

(私はSOLR 3.6を使用しています)

4

2 に答える 2

3

私はsolr-php-clientを使用してこれを行っています。特定の値を解析するために正規表現を使用していますが、デバッグの説明にアクセスするのは簡単です。

例として、デバッグの説明から coord 値を抽出する方法を次に示します。

$client = new Apache_Solr_Service($hostname, $port, $url);
$response = $client->search($q, $offset, $limit, $parameters);

$debug = reset($response['debug']['explain']); // get the first explanation
if (preg_match('#([\d\.]+) = coord\((\d+)/(\d+)\)#m', $debug, $matches)) {
    $coord = floatval($matches[1]);
    $overlap = intval($matches[2]); // the number of matching keywords
    $max_overlap = intval($matches[3]); // the total number of keywords
}
于 2012-05-05T01:43:41.453 に答える
1

私は同じ問題を抱えており、solrの説明をオブジェクト構造に解析するためのgithubプロジェクトを見つめました。このライブラリを使用すると、Explain 出力から特定のフィールドの影響を計算できます。

https://github.com/timoschmidt/php-solr-explain

于 2013-02-03T18:26:20.897 に答える