Solr 搜索可以在键中包含通配符吗?
Could Solr search contains wildcard in key?
我有一个 json 块在 solr 中保存为一个文档,
{
"internal":...
"internet":...
"interface":...
"noise":...
"noise":...
}
我可以搜索“inter*:*”吗?我想找出关键字以 "inter"
开头的所有内容
不幸的是,我遇到了解析器错误,有什么办法可以在密钥中使用通配符进行搜索吗?
您可以使用 Dynamic fields
。它允许 Solr 索引您未在模式中明确定义的字段。
如果您发现忘记定义一个或多个字段,这将非常有用。 Dynamic fields
通过在可添加到 Solr 的文档中提供一些灵活性,可以使您的应用程序不那么脆弱。
动态字段可以定义为
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
有关动态字段的更多信息,请参阅 solr 文档。
Dynamic Fields
在此之后创建一个复制字段。将动态字段复制到复制字段中。
完成此操作后,可以在 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"/>
不,不是真的。如果提供通配符对您很重要,您必须将其作为 copyField
来执行,实际上是将所有内容复制到一个字段中,然后查询该字段。
您可以通过 qf
提供多个字段,而无需在 q
参数中指定每个字段,只要您使用 edismax
查询处理程序 - 这通常更灵活,但它仍然需要指定每个字段。
还有一个 little known feature named "Field aliasing using per-field qf
overrides"(至少我不知道)。如果我正确地解析了我能够从一些网络搜索中找到的内容,你应该能够做到 f.i_fields.qf=internal internet interface&qf=i_fields
。实际上创建了一个引用这三个字段的 i_fields
别名。你仍然需要明确地给他们。
我有一个 json 块在 solr 中保存为一个文档,
{
"internal":...
"internet":...
"interface":...
"noise":...
"noise":...
}
我可以搜索“inter*:*”吗?我想找出关键字以 "inter"
开头的所有内容不幸的是,我遇到了解析器错误,有什么办法可以在密钥中使用通配符进行搜索吗?
您可以使用 Dynamic fields
。它允许 Solr 索引您未在模式中明确定义的字段。
如果您发现忘记定义一个或多个字段,这将非常有用。 Dynamic fields
通过在可添加到 Solr 的文档中提供一些灵活性,可以使您的应用程序不那么脆弱。
动态字段可以定义为
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
有关动态字段的更多信息,请参阅 solr 文档。 Dynamic Fields
在此之后创建一个复制字段。将动态字段复制到复制字段中。
完成此操作后,可以在 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"/>
不,不是真的。如果提供通配符对您很重要,您必须将其作为 copyField
来执行,实际上是将所有内容复制到一个字段中,然后查询该字段。
您可以通过 qf
提供多个字段,而无需在 q
参数中指定每个字段,只要您使用 edismax
查询处理程序 - 这通常更灵活,但它仍然需要指定每个字段。
还有一个 little known feature named "Field aliasing using per-field qf
overrides"(至少我不知道)。如果我正确地解析了我能够从一些网络搜索中找到的内容,你应该能够做到 f.i_fields.qf=internal internet interface&qf=i_fields
。实际上创建了一个引用这三个字段的 i_fields
别名。你仍然需要明确地给他们。