【发布时间】:2011-07-13 13:06:28
【问题描述】:
我正在使用 solr 对我的数据库进行搜索,并尝试在 conf/schema.xml 中添加一个新字段(文章的 publisher_id)以在对我的数据库进行搜索后获取 publisher_id 的值,但我没有'找不到与该字段等效的任何字段名。那么如何将它添加为 schema.xml 中的一个字段,以与文章的搜索值(正文、标题、日期和发布者 ID)一起返回?
【问题讨论】:
我正在使用 solr 对我的数据库进行搜索,并尝试在 conf/schema.xml 中添加一个新字段(文章的 publisher_id)以在对我的数据库进行搜索后获取 publisher_id 的值,但我没有'找不到与该字段等效的任何字段名。那么如何将它添加为 schema.xml 中的一个字段,以与文章的搜索值(正文、标题、日期和发布者 ID)一起返回?
【问题讨论】:
首先:publisher_id 中存储了什么样的数据? 如果是数字(int, log),则添加对应类型的字段,如:
<field name="publisher_id" type="int" indexed="true" stored="true" />
向 schema.xml 添加字段后,您必须重新启动 solr-instance 并重建索引。
【讨论】:
请注意,动态字段添加 have been added in Solr 4.4 and Solr 5.0...两者都尚未发布。
与此同时,如果您希望将字段添加到索引中,您有两种选择。首先,您可以采取艰难的方式:将字段添加到架构中,清除索引,重新启动 Solr 并重新索引所有内容。这往往有点站不住脚。
或者,您可以使用dynamic field declaration。如果您查看架构,您会看到如下所示的行:
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<dynamicField name="*_is" type="int" indexed="true" stored="true" multiValued="true"/>
这意味着,如果您添加一个名称以 _i 或 _is 结尾的字段,您就可以开始使用了。这些通常在默认架构中启用,因此如果您可以灵活地调用该字段,您可能已经全部设置好了。
如果这些选项看起来都没有希望,您的第三个选择是等待 Solr 4.4 或 5.0 并升级(这也很可能需要重新索引!)。
【讨论】: