2014-03-26 3 views
0

Apache Solr을 처음 사용했습니다. Solr과 PHP 웹 애플리케이션 간의 상호 작용을 위해 Solr PHP 클라이언트를 사용하고 있습니다.Apache Solr에서 독일어 움라우트 처리

im facing 문제는 독일어 움라우트 문자입니다. 내가 그 안에 문자열을 갖는 움라우트 문자를 검색하려고 할 때마다 아래에 주어진, SOLR에서 예외가 발생합니다 :

exception 'Apache_Solr_HttpTransportException' with message ''400' Status: Bad Request' 
in C:\SolrPhpClient\Apache\Solr\Service.php:338 
Stack trace: #0 C:\SolrPhpClient\Apache\Solr\Service.php(1170): 
Apache_Solr_Service->_sendRawGet('http://localhost...') #1 C:\Apache24\htdocs\MyProject\results.php(42): 
Apache_Solr_Service->search('f?r', 0, 10) #2 {main} 

당신은 독일의 "모피"

"F R?"로 표시됩니다 볼 수 있듯이

iconv() 및 htmlentities()를 사용하여 변환하려고했으나 false 또는 empty를 반환했습니다.

$query = "für"; //string with German umlaut 

try { 
    //instantiate a Solr object 
    $solr = new Apache_Solr_Service(SOLRHOST, SOLRPORT, SOLRNAME); 

    // Check if Solr is running 
    if (!$solr->ping()) { 
     echo 'Solr service not responding!'; 
     exit; 
    } 

    // I have tried these functions 
    // $query = iconv("UTF-8", "ISO-8859-15//TRANSLIT",$query); 
    // $query = htmlentities($query,ENT_QUOTES,'UTF-8'); 

    //run the query 
    $results = $solr->search($query, 0, 10); // exception occurs here 

    $numDocs = $results->response->numFound; 
    $docs = $results->response->docs; 
    // Check if there are any results 
    if (empty($numDocs) || $numDocs <= 0) { 
     print_r($docs); 
     echo "No records found!!"; 
    } else { 
     echo ("No. of docs:".$numDocs."<br/>"); 
     print_r($docs); 
     echo "records found!!"; 
    } 

} catch (Exception $e) { 
    $log->error($e->getMessage()); 
    echo($e->__toString()); 
} 
+0

전체 오류 메시지를 추가 하시겠습니까? 당신은 C에서 잘못된 Request 후에 흥미로운 부분을 잘라낼 수도 있습니다 ... ' – cheffe

+0

안녕하세요 cheffe, 위의 오류 메시지를 업데이트했습니다. – Harshrossi

답변

0

당신이 메시지 (400)를 받고있는 경우는, 다음 로그에 SOLR의 측면에서 실제 오류 메시지가 있어야한다 :

내 코드입니다. 그것이 무엇을 말하는지 확인하십시오, 그것은 올바른 방향으로 당신을 지적해야합니다.

또한 관리자 UI에서 직접 텍스트를 검색 할 때와 PHP 코드에서 검색 할 때 생성 된 쿼리를 비교하십시오. 차이점을 확인하고 오류의 위치를 ​​식별 할 수 있습니다.

+0

안녕하세요, Alex. 예. 그렇지만 Solr은 오류를 표시하지 않습니다. 또한 Solr 관리자에서 같은 텍스트 "für"에 대해 쿼리를 시도하고 원하는 결과를 얻었습니다. 나는 PHP 쪽에서 쿼리하는 동안 오류가 발생합니다. – Harshrossi

+0

Solr 측에서 실제로 PHP에서 Solr까지 모든 것을 얻었음을 나타 내기 위해 무엇인가를 얻고 있습니까? 그렇지 않다면 어쩌면 당신은 다른 것을 함께 다 쳐야 할 것입니다. 다른 모든 것이 실패하면 Wireshark와 같은 것을 실행하고 실제로 PHP가 유선에 기록한 내용을보고 작업 요청과 비교할 수 있습니다. 그러나 localhost와는 다른 호스트를 가리켜 야합니다. 예 : example.com. 또는 Runscope.com을 사용하십시오. 오류가 발생하여 다시 표시되지만 적어도 쿼리가 표시됩니다. –

관련 문제