2011-06-29 137 views
0

我想在索引时间内为每个索引文档提供附加信息。
并在查询时间在同一分析器中访问此信息以进行比较。
所以。理论上,将此值写入本文档中的某个字段并在查询时间搜索此字段也是非常好的。Solr:在哪里存储附加信息?

f.e.我有一个动物分贝。我想找到里面有3个字'狗'的所有文件。 (只是一个例子)。我可以为我的“动物”字段设置我的自定义BaseTokenFilterFactory,它将生成我自定义的TokenFilter,它将只计算所有“狗”字并将此号存储在某处。所以。我可以在哪里存储这个值,以便在搜索时访问它?

回答

1

您的示例听起来像是更适合于通过自定义相似性或Solr中的查询函数处理而不是自定义分析器的东西。

例如,如果使用Solr 4.0,则可以使用函数termfreq(field,term)按狗出现的次数排序。或者您可以使用它作为一个过滤器,像这样:

fq={!frange l=3 u=100000}termfreq(animals,"dog") 

这将筛选其动物字段不具有至少出现3字狗的所有文件。 使用此方法的优点是您不会影响文档的评分,只会对它们进行过滤。

按功能来过滤的能力存在,因为Solr的1.4所以,即使您正在使用Solr的(> 1.4)的早期版本,你可以很容易地编写了“termfreq”功能查询自己

+0

的“Solr 4.0还没有得到发布“。 – denys

+0

@denys,我知道,但你可以很容易地自己构建这个功能,因为IndexReader包含了你需要的所有数据(术语频率,文档频率......) – Asaf

+0

我写了这样的函数,但是我在[question] (http://stackoverflow.com/q/6534949/658346) – denys