Solr查询非索引字段的搜索

3

Solr版本6.1.0。

创建了一个模式,其中一些字段设置为indexed=true,我希望Solr主查询q只搜索这些字段。

还添加了更多字段,我只想选择它们,因此将它们标记为stored=trueindexed=false

enter image description here

问题在于,主查询q=India正在搜索非索引字段(如图像中指定的国家)。

请参见下面的结果 enter image description here

仅当我指定非索引字段的完整值时,它才会选择非索引字段。

请参见q=Indi的结果 enter image description here

如何限制solr不搜索非索引字段?

1个回答

1
根据上面的截图,您正在将发送到字段country的内容复制到字段_text_中。当您没有为Solr指定要搜索的特定字段(即,您没有使用其中一个具有qf的dismax处理程序或没有在术语前缀中加上字段名field:value时),它会回退到默认搜索字段。这是默认设置为_text_。此字段已索引,由于您正在从国家字段复制内容到_text_字段中,因此来自country的值将产生命中。
如果您不希望发生这种情况,请不要将country中的内容复制到_text_中,或者提供Solr实际想要搜索的字段。

我有几个字段(不是全部)需要搜索数据,根据https://wiki.apache.org/solr/SchemaXml#Common_field_options,只有标记为indexed=true的字段才可以进行搜索,那么当我想要在已标记为indexed的字段上搜索我的关键字时,应该放在什么位置呢?我尝试将其放在q(主查询)中,但似乎不起作用。 - Niranjan Kumar
如前所述,您可以使用(e)dismax处理程序(查询字段-要查询的字段)与qf一起使用。这使您能够单独权衡不同的字段,给一个字段比另一个字段更多的权重-qf=field1 field2^2将field2的重要性提高了两倍。或者您可以像在当前模式中的_text_一样,将所有内容复制到一个共同的字段中,然后搜索该字段。或者您可以使用q=field:value在特定字段中寻找命中结果。 - MatsLindh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接