Solr搜索可以在键中包含通配符吗?



>我有一个json块在solr中保存为一个文档,

{
"internal":...
"internet":...
"interface":...
"noise":...
"noise":...
}

我可以搜索为"inter*:*"吗?我想找出所有以"inter"开头

的内容不幸的是,我遇到了解析器错误,有什么方法可以在键中使用通配符进行搜索?

不,不是真的。如果提供通配符对您很重要,则必须copyField执行此操作,实际上将所有内容复制到单个字段中,然后查询该字段。

只要使用edismax查询处理程序,就可以通过qf提供多个字段,而无需在q参数中指定每个字段 - 这通常更灵活,但仍需要指定每个字段。

还有一个鲜为人知的功能,名为"使用每字段qf覆盖的字段别名"(至少我不知道(。如果我正确解析了我从一些网络搜索中找到的内容,您应该能够执行f.i_fields.qf=internal internet interface&qf=i_fields。实际上,创建一个引用这三个字段的i_fields别名。您仍然必须明确地提供它们。

您可以使用Dynamic fields.它允许 Solr 为您未在架构中显式定义的字段编制索引。

如果您发现忘记定义一个或多个字段,这将非常有用。Dynamic fields可以通过在可添加到 Solr 的文档中提供一些灵活性来使您的应用程序不那么脆弱。

动态字段可以定义如下

<dynamicField name="*_i" type="int" indexed="true"  stored="true"/>

有关动态场的更多信息,请参阅 solr 文档。 动态字段

在此之后创建一个复制字段。将动态字段复制到复制字段中。

完成此操作后,可以在 copyField 上完成查询。

<dynamicField name="inter_*" type="string" indexed="true" stored="true"/>
<field name="internal_static" type="string" indexed="true" stored="true" multiValued="true"/>
<copyField source="inter_*" dest="emp_static"/>

相关内容

  • 没有找到相关文章

最新更新