【发布时间】:2011-12-20 04:48:48
【问题描述】:
我是 solr 的新手。我想搜索数据库。我可以导入值并对其进行索引。但是在搜索时,似乎有必要在搜索查询中提及字段名称。如何在不指定字段名称的情况下完成。
【问题讨论】:
标签: solr data-import
我是 solr 的新手。我想搜索数据库。我可以导入值并对其进行索引。但是在搜索时,似乎有必要在搜索查询中提及字段名称。如何在不指定字段名称的情况下完成。
【问题讨论】:
标签: solr data-import
您可以将所有数据导入default field。那么您不需要明确提及字段名称。 (虽然你仍然可以,如果你愿意)
Solr 的默认schema.xml 已经包含使用此类“catchall”字段的示例:
首先该字段必须像任何其他字段一样声明:
<field name="text" type="text_general" indexed="true"
stored="false" multiValued="true"/>
然后这个新字段必须被声明为默认字段。每当没有搜索特定字段时,都会搜索此字段:
<defaultSearchField>text</defaultSearchField>
您还需要一些 copyField 语句,将所有现有字段复制到 catchall 字段中:
<copyField source="cat" dest="text"/>
<copyField source="name" dest="text"/>
<copyField source="my_special_field_1" dest="text"/>
<copyField source="my_special_field_2" dest="text"/>
...
因此,每当索引字段my_special_field_1 时,它的值也添加到text 字段。
作为一种快捷方式,您可以将所有字段复制到 text 字段中
<copyField source="*" dest="text"/>
之后,您可以在不指定任何字段的情况下执行搜索。
【讨论】:
stored 参数为 false,因此不会存储原始数据,所以指数的增长应该是适度的。
string类型的字段并用原始表的名称填充。