【问题标题】:cfindex how many custom fields can we havecfindex 我们可以拥有多少个自定义字段
【发布时间】:2013-11-26 03:20:09
【问题描述】:

我目前正在使用 cfsearch 为我的网站整合一个搜索功能。我们使用的是 CF 10,所以我相信它可以在 Solr 上运行。

在 cfindex 标记中,我可以看到我们可以添加一些自定义字段,但由于我们的搜索要返回的信息量很大,我想知道我们将如何让其他字段作为返回的一部分可用数据集?

目前,我们在 custom1 - custom4 中填充了来自数据库查询的多个字段,但我们仍然需要在运行搜索时向用户或模板中提供其他属性。

有什么方法可以将超过 4 个自定义字段添加到 cfindex 中?

提前致谢

【问题讨论】:

    标签: solr coldfusion coldfusion-10 cfindex


    【解决方案1】:

    Adobe 对 ColdFusion 10 中的 Solr 实现进行了改进,使其不再具有以前版本的 ColdFusion 所具有的 cfindex 的自定义字段限制。即 - custom1、custom2、custom3 和 custom4。像往常一样,online documentation for the tag 只是从以前的版本中继承而来,所以有点混乱。

    有关更多信息,请参阅此文档 - Solr enhancements in ColdFusion 10
    存储您的自定义数据部分下的该文档中:

    ColdFusion 9 的变体

    • ColdFusion 9 对自定义字段(即 custom1、custom2、custom3 和 custom4)的支持有限。 在 ColdFusion 10 中,自定义字段是动态的。
    • 在 ColdFusion 9 中,显示所有自定义字段。在 ColdFusion 10 中,cfdump 仅生成具有数据{{}} 的字段。也就是说,如果您只指定了自定义 1 和自定义 2,则只会显示这两个字段。
    • 考虑以下代码:

      <cfsearch criteria='some_criteria and column_i: [ 10 - 20 ]'...>

      这里,some_criteria 表示过滤。例如column_i: [ 10 - 20 ]表示搜索所有值在10到20之间的项目。column_i是用户在索引时提供的自定义字段。此选项在 ColdFusion 9 中可用,但仅限于四个自定义字段。 在 ColdFusion 10 中,选项不受限制。

    • 在 ColdFusion 10 中,您可以对必须返回的搜索结果进行排序。

    注意:当您在 Solr 集合中搜索字段类型字符串时,条件应在引号内,例如 criteria='string_s:"something missing"'


    要指定自定义字段,请使用以下语法:

    <cfindex ... 
       datefield_dt=#date1# 
       column_i=#secondaryColumn# 
       body=#primaryColumn# 
       ....../>
    

    注意自定义字段只能包含小写字符。

    在代码中,_i 代表整数自定义数据,其值被存储和索引。任何以 _i 结尾的字段名称都被视为 Solr 整数。 同样,_s 代表字符串自定义数据。

    schema.xml 中列出了所有支持的数据类型:

    <dynamicfield name="*_i" type="sint" indexed="true" stored="true"/> 
    <dynamicfield name="*_s" type="string" indexed="true" stored="true"/> 
    <dynamicfield name="*_l" type="slong" indexed="true" stored="true"/> 
    <dynamicfield name="*_t" type="text" indexed="true" stored="true"/> 
    <dynamicfield name="*_b" type="boolean" indexed="true" stored="true"/> 
    <dynamicfield name="*_f" type="sfloat" indexed="true" stored="true"/> 
    <dynamicfield name="*_d" type="sdouble" indexed="true" stored="true"/> 
    <dynamicfield name="*_dt" type="date" indexed="true" stored="true"/> 
    <dynamicfield name="random*" type="random"/>
    

    注意:_dt 仅支持 ColdFusion 支持的日期格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多