2012-04-06 142 views
3

したがって、Solrを使用してデータを読み込み、そのデータを処理し、更新を保存しています。できます!それを出荷!それで(テストでは、FSMに感謝します)あなたは幾分奇妙な失敗を得るようになります。場合によっては動作しますが、Solrサーバーが400または500のエラーを返すことがあります。ウィスキータンゴフォックストロット?SolrがHTTPエラー400または500を返します

書店アプリだと言ってください。国際書店。ここには複数のコードページがあります。スペイン語の一部のタイトル、ヘブライ語のものもあります。アプリ自体はアメリカ英語です。あなたのフィールド名はキリル文字の英語、タイトル、その他のテキスト、またはヘブライ語での文字の並べ替えの楽しさです。あなたは、ヘブライ語のタイトルのうちの1つ(しかしすべてではない)が問題を引き起こしていることに気づきます。

次のプロセスは次のとおりです。レコードを取得してレコードを更新し、レコード全体をSolrに書き戻すには、Solrをクエリします。 "Count"フィールドを "5"から "4"に更新しています。一部のタイトルが更新され、一部が失敗します。グーグルではあらゆる種類の可能性のある赤ちゃんが明らかになります。バイトオーダーマークの問題ですか? UTF8制御文字ですか?設定が間違っていますか?多分。しかし。

<add> 
    <doc> 
    <field name="StockNumber">1</field> 
    <field name="Count">5</field> 
    <field name="Title">רוקד עם זאבים</field> 
    <field name="Translated_Title">Dances With Smurfs</field> 
    <field name="Summary">Our Hero goes to another place, bonds with the Odd Looking Natives, & saves the day.</field> 
    </doc> 
</add> 

問題は「概要」の欄にある:

は次のようになり、ドキュメントの更新を考えます。具体的には、「&」。 URLは"&amp;"にエンコードされていなければなりません。それ以外の場合は、更新の一部ではなくコマンドとして解釈されます。クエリが返すのは、"&amp;"のように "&"のようにSolrに返されたことに注意してください。Solrへのクエリから返されたデータを、Solrを更新するための適切な形式として受け入れることはできません。もちろん、URLをにエンコードした場合、フィールドを読み込む前にSolrから読み込むと、ヘブライ語(この例では)が16進形式で格納され、その形式で返されます。ヘブライ語として)。

しかし、Solrは"&amp;"を "&"と保存します。

<と>同じ問題があります。

+2

あなたの質問は何ですか?これは単なる暴言ですか? –

+0

どちらもありません。他の人がそれを見ることができるようにここに。私は昨日のほとんどをこのことを理解するのに費やしていました。他人が同じことをするのを妨げることを願っています。 私は、問題への反応がGoogleの "site:stackoverflow.com error description-of-problem"にある唯一のコーダになることはできません。 – wiredog

+0

あなたの答えが他の人に役立つと思われる場合は、問題を投稿し、次にあなた自身の質問に答えてください。回答セクションは、ソリューションが行くべき場所です。 –

答えて

1

クライアントアプリケーションからすべてのCDATAタグを送信してみます。 のように:もちろん

<add> 
    <doc> 
    <field name="StockNumber"><![CDATA[1]]></field> 
    <field name="Count"><![CDATA[5]]></field> 
    <field name="Title"><![CDATA[רוקד עם זאבים]]></field> 
    <field name="Translated_Title"><![CDATA[Dances With Smurfs]]></field> 
    <field name="Summary"><![CDATA[Our Hero goes to another place, bonds with the Odd Looking Natives, & saves the day.]]></field> 
    </doc> 
</add> 

それは整数フィールドのための必要はありませんが、あなたは、動的にそれは常に簡単です使用して、アプリケーションから文書を構築している場合。

唯一の警告は、テキストに既にCDATAタグが含まれていないことを確認することです。ダブルCDATAはどこにでも問題を引き起こすでしょう。

+0

それはそれを修正した。ありがとう! – wiredog

+0

私の状況では動作しません。 – David

関連する問題