3

私はSolrのアラビア語検索に数日間苦労しており、いくつかの実験を行いました。これが問題の簡単な反映です。

いくつかのアラビア語の文 (現在は 1 語のみ السوري ) をデータベースに保存し、Solr にインデックスを付けさせた後q=*:*&wt=python、(wt 部分がない場合は文字化けしていた) でクエリを実行すると、応答は次のようになります。

'\u00d8\u00a7\u00d9\u201e\u00d8\u00b3\u00d9\u02c6\u00d8\u00b1\u00d9\u0160'

インデックス用にそこに保存する実際の単語は、別の方法でコーディングしています。

'\xd8\xa7\xd9\x84\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a'

お分かりのように、 from \xd8↔に対応する one-to-to があり\u00d8ます。しかし、このコーディングの名前がわからないので、変換できません。そして、次のように検索すると<>/select/?q=السوري&wt=python、応答は次のようになります。

{'responseHeader':{'status':0,'QTime':0,'params':{'wt':'python','q':u'\u0627\u0644\u0633\u0648\u0631\u064a'}},'response':{'numFound':0,'start':0,'docs':[]}}

ドキュメントが見つからず、コーディングに 3 番目のバージョンを使用しているようですu'\u0627\u0644\u0633\u0648\u0631\u064a'。私がそれを取ると、encode('utf8')それは に戻り'\xd8\xa7\xd9\x84\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a'ます。

要約すると、コード (python) またはデータベース (mysql) にある場合、「form1」として表示されます。

'\xd8\xa7\xd9\x84\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a'

Solr によってインデックスが作成されると、form2 に変換されます。

'\u00d8\u00a7\u00d9\u201e\u00d8\u00b3\u00d9\u02c6\u00d8\u00b1\u00d9\u0160'

そして、<>/select/?q=السوري&wt=pythonブラウザ(Google chrome)からクエリを実行するために を使用すると、form3 になります。

'\u0627\u0644\u0633\u0648\u0631\u064a'

(これは form1 に戻すことができますがencode('utf8')、これらは異なるため、検索は何も一致しません。

したがって、これらの 3 つの異なるエンコード方法が中心的な問題である可能性があります。誰かがそれを理解し、検索の問題を解決するのを手伝ってくれませんか?

前もって感謝します。

4

0 に答える 0