cfindex我们可以拥有多少个自定义字段

时间:2013-11-26 03:20:10

标签: solr coldfusion coldfusion-10 cfindex

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

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

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

有没有办法在cfindex上添加4个以上的自定义字段?

提前致谢

1 个答案:

答案 0 :(得分:3)

Adob​​e在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支持的日期格式。