3

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

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

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

有没有办法向 cfindex 添加超过 4 个自定义字段?

提前致谢

4

1 回答 1

3

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

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

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

于 2013-11-26T16:26:05.110 回答