solrで予約されたキーワードを「:」として含むフィールドをクエリするにはどうすればよいですか?
例えば、
q = 'uri:http://www.example.com'
予約語「:」を含む「 http://www.example.com 」のエラーをスローします
solrで予約されたキーワードを「:」として含むフィールドをクエリするにはどうすればよいですか?
例えば、
q = 'uri:http://www.example.com'
予約語「:」を含む「 http://www.example.com 」のエラーをスローします
これをテストしたところ、「:」のように「:」をエスケープするだけでうまくいくようです。
q = 'uri:http\://www.example.com'
自分のサイトのインデックスでは、URLのパスを保存する傾向がありますが、ドメインを自分で知っているので、以前は問題になりませんでした。ただし、外部URLにインデックスを付ける場合は、もちろん完全なURLが必要です。
インデックス作成中にLuceneの予約文字をエスケープ/置換し、元の値を別のフィールド(stored="true" indexed="false"
スキーマ内)に格納します。予約文字をスペースに置き換えるhttp www.example.com
と、インデックス付きフィールドに入れられhttp://www.example.com
、保存されます。インデックス付きフィールドのタイプに応じて、正確な値(プレーン文字列の場合)またはトークン(アナライザーがある場合)を照会できます。