1

我在 schema.xml 中有一个这样定义的字段:

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

我在文档中存储了图像缩略图的 Base64 字符串表示,因此我们的搜索结果屏幕可以呈现这些缩略图。这很好用;我们在浏览器客户端中显示人和物体的图像。

问题是 base64 字符串的文本是可搜索的,即使在 schema.xml 中设置了 indexed="false"。

我通过输入汽车制造短手(大众汽车的大众)找到了这个,我得到了两次点击。它不返回任何命中突出显示信息,而是返回一些匹配的记录。

我进一步搜索“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 回答