2012-05-05 16 views
1

solrのデバッグモード説明機能のデフォルトの「人間が判読可能な」書式設定は完全に役に立たない。 debug.explain.structured = trueを渡すことで、構造化されたXML出力を得ることができます。Lucene/SOLRを解析するdebug.explain.structured PHPでのxml出力

しかし、生成するxmlは本当に使用できません。また、私はこのコードをデバッグ情報をコードのどこかで使用できるようにする必要があります。私は前に

は、私は2つの質問があり、車輪を再発明する:

1)誰もがこのXMLを解析し、便利なオブジェクトにそれを向けるだろう、既存のPHPクラス(または関数)を知っていますか? (グーグルでは何も明らかにならなかった)

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

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

+0

助けることができます。このライブラリを使えば、Explain出力から特定のフィールドの影響を計算することが可能です。 PHPはJSONを完全に配列と連想配列に解析できます。 – aitchnyu

答えて

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 
} 
1

私は同じ問題を抱えてとSolrのオブジェクト構造の中に説明を解析するためのgithubのプロジェクトを見つめています。 [JSON応答ライター](http://wiki.apache.org/solr/SolJSON)

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

関連する問題