>我有一个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"/>