Solr 外部文件

ExternalFileField类型使得一个指定的域值可来自于一个外部文件, 而不是在Solr index中。 对于这个指定的field, 文件中包含了key field及filed值的mapping关系。从另一个角度想, solr得到的值来自于外部文件, 而不是index.
注: 此外部域是不能被索引到
此ExternalFileField类型对于经常更新一个被多个文档引用的field是有用的. 假设你有一个完成的文档,并且以数字排序。 有可能每天或每小时想更新排序等级,然文档的其余内容则更新很少。 如果没有ExternalFileField, 只能更新每个文档的排序等级。 然而使用ExternalFileField更加有效, 因为所有文档的特殊field都是存储在同样一个外部文件里,保持多对一的关系, 这样就可以更改一处, 得到想要的效果。
 
例如:In managed-schema, field type的定义如下 :
<fieldType name="entryRankFile" keyField="pkId" defVal="0" stored="false" indexed="false" class="solr.ExternalFileField" valType="pfloat"/>
 
keyField属性定义了在外部文件的key值,在index中,经常使用唯一值来确定一个文档, 但是keyFiedl一般不用来作为确定一个在index 文档的唯一标识。如果没有相对应的外部文档, defVal能用来作为默认值,
 
  • 外部文件格式化:
外部文件放置在Solr的索引目录, 默认是在$SOLR_HOME/data。 文件名应该是external_fieldname or external_fieldname.*的形式, 例如:文件的命名方式: external_entryRankFile or external_entryRankFile.txt.
  • 重新加载外部文件
可以定义一个事件监听器来加载一个外部文件, 当一个searcher被加载或一个new searcher启动。
简单的定义如下:
<listener event="newSearcher" class="org.apache.solr.schema.ExternalFileFieldReloader"/>
<listener event="firstSearcher" class="org.apache.solr.schema.ExternalFileFieldReloader"/>
 

猜你喜欢

转载自ljhupahu.iteye.com/blog/2324561