2016-12-22 30 views
0

私は、私のSolrスキーマの名前空間フィールド名にコロン文字を使用しました。異なるソースから数百のフィールドがあるため、名前空間の文字を使用する必要があります。アンダースコアはサブネーム内で使用されるため、使用できません。"fl"パラメータでSolrフィールド名のコロンをどのようにエスケープできますか?

Solrがコロンを見ると、擬似フィールド解析(SOLR-2444参照)が発生するという問題があるようです。フィールドtika:metadata:heightについては、Solrには、メッセージで400エラーを返します:

undefined field: "metadata"

私は:文字をエスケープする方法を見つけるように見えることはできません。誰か見つけましたか?

バックスラッシュでエスケープすると機能しません。

私はSolrJ Javaクライアントを使用しています。

答えて

1

その構文エラーだけでなく、メッセージとは - tika:metadata:height

を解析できませんあなたは、メタデータフィールドは、あなたのschema.xmlで定義されていないことを意味し、あなたのそのはundefined field: "metadata"を示すによう\ \:

を使用して:を逃れることができますが、ファイルなので、それを確認してください。誤り訂正と構文上の

、クエリ要求tika:metadata\:heightは、フィールド名に文字列値"metadata:height"を検索すること"tika"

トークン化

例:

q=\:title 

もあるため、クエリのトークン化の を使用した場合、:コロンは破棄されます。

:はエスケープされますが、パーズクエリーはq=titleとなります。

は私がblackslashでエスケープが機能しないことを指定している必要がありますsolr.WhitespaceTokenizerFactory

+0

で試してみてください。 –

+0

solrリクエストurlで 'debugQuery = true'を使用すると、解析後のクエリの見た目がわかります。 StandardTokenizerは単語境界として特殊文字を使用します。 – vinod

関連する問題