1

schema.xml 内で次のように定義されたフィールドがあります。

<field name="ImageThumbnail" type="string" indexed="false" stored="true" required="false" />

ドキュメント内の画像サムネイルの Base64 文字列表現を保存しているので、検索結果画面でこれらのサムネイルを表示できます。これはうまくいきます。ブラウザクライアントに人や物の画像を表示します。

問題は、indexed="false" が schema.xml に設定されているにもかかわらず、base64 文字列のテキストが検索可能であることです。

これは、Automotive Vehicle Make の短縮形 (Volkswagon の場合は VW) を入力して見つけたもので、2 件ヒットしました。ヒットの強調表示情報は返されませんが、いくつかの一致するレコードが返されます。

さらに「4AAQSkZJRgABAQEAYABgAAD」を検索したところ、150 件以上ヒットしましたが、すべて ImageThumbnail 列内の文字列に一致していました。

私は何が欠けていますか?Indexed="false" の場合、Solr はどのようにしてそのフィールドで一致を検索して見つけることができますか? Indexed="false" でない場合、他に何がフィールドの検索を停止しますか?

クエリ用に /select を実行しています。参考までに、ここに私の /select requestHandler を示します。

  <requestHandler name="/select" class="solr.SearchHandler">
   <lst name="defaults">
   <str name="echoParams">explicit</str>
   <int name="rows">250</int>
   <str name="wt">json</str>
   <str name="hl">true</str>
   <str name="hl.fl">*</str>
   <str name="indent">true</str>
   <str name="df">text</str>
 </lst>

考えや提案をありがとう。VW (車両を扱う場合) は一般的な検索用語になるため、一致させるために画像文字列を除外する必要があります。

4

1 に答える 1

1

トークンは、検索している文字列に含まれています。フィールドに対して検索していない可能性がありImageThumbnailます (/select の出力は、フィールドに対してクエリを実行していることを示しているようですtext)。これはtext、おそらくフィールドにcopyField追加するのと同じコンテンツをそのフィールドに追加するディレクティブがあるため、コンテンツがフィールドに存在することを示していますImageThumbnail

スキーマ内の copyField ディレクティブを見つけて、コンテンツが想定外のフィールドに移動するかどうかを確認します (ワイルドカードがこれに影響する可能性があります)。また、インデックス作成時に同じコンテンツをテキスト フィールド (または、別のフィールドをクエリしている場合はそのフィールド) に追加していないことを確認します (これはあまり起こりそうにない状況です)。

于 2014-09-10T15:20:16.077 に答える