【问题标题】:Solr returning matches on fields where Indexed="false"Solr 在 Indexed="false" 的字段上返回匹配项
【发布时间】:2014-09-10 14:46:33
【问题描述】:

我在 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(处理车辆时)将是一个常见的搜索词,我需要排除图像字符串进行匹配。

【问题讨论】:

    标签: solr match indexed


    【解决方案1】:

    嗯,标记存在于您正在搜索的字符串中。您可能没有搜索 ImageThumbnail 字段(您的 /select 输出似乎表明您正在查询 text 字段)。这表明内容存在于 text 字段中,可能是因为您有一个 copyField 指令,该指令将相同的内容添加到该字段,就像您添加到您的 ImageThumbnail 字段一样。

    在您的架构中查找任何 copyField 指令,以查看您的内容是否进入您没有考虑过的字段(通配符可能会影响这一点)。还要确认您在索引时没有向文本字段(或者如果您正在查询另一个字段,则该字段)添加相同的内容(这种情况不太可能发生)。

    【讨论】:

    • copyField 指令就是它 - 感谢您为我指明正确的方向。它让我不知道该往哪里看。
    猜你喜欢
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多