【问题标题】:Add field in solr schema.xml在 solr schema.xml 中添加字段
【发布时间】:2011-07-13 13:06:28
【问题描述】:

我正在使用 solr 对我的数据库进行搜索,并尝试在 conf/schema.xml 中添加一个新字段(文章的 publisher_id)以在对我的数据库进行搜索后获取 publisher_id 的值,但我没有'找不到与该字段等效的任何字段名。那么如何将它添加为 schema.xml 中的一个字段,以与文章的搜索值(正文、标题、日期和发布者 ID)一起返回?

【问题讨论】:

    标签: solr field


    【解决方案1】:

    首先:publisher_id 中存储了什么样的数据? 如果是数字(int, log),则添加对应类型的字段,如:

    <field name="publisher_id" type="int" indexed="true" stored="true" />
    

    向 schema.xml 添加字段后,您必须重新启动 solr-instance 并重建索引。

    【讨论】:

    • 我试过了,我添加到选择查询中,但是没有用,
    • 选择 id,标题作为标题,正文,日期作为创建日期,publisher_id 来自文章
    • 你在哪里添加了sql语句?在数据导入处理程序配置?你确定,那个 publisher_id 不在索引中吗?你确定,你在字段 publisher_id 中的 realey 搜索?例如使用参数 &qf=publisher_id,* !?
    • The Bndr你能说一下如何重建索引
    • @AnirudhJadhav 有不同的方法。最简单的一种是使用 solr 管理界面,使用“重新加载”按钮。您也可以发送 curl 请求。
    【解决方案2】:

    请注意,动态字段添加 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 并升级(这也很可能需要重新索引!)。

    【讨论】:

    • “清除索引”的意思是删除数据目录吗?
    • 是的。这样就行了。另一种方法是通过 Solr API,但我有 90% 的把握它会做同样的事情。
    猜你喜欢
    • 2016-08-15
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多