zoukankan      html  css  js  c++  java
  • 1.4.2 solr字段类型--(1.4.2.6)使用外部文件和程序

    1.4.2 solr字段类型

      (1.4.2.1) 字段类型定义和字段类型属性.

      (1.4.2.2) solr附带的字段类型

      (1.4.2.3) 使用货币和汇率

      (1.4.2.4) 使用Dates(日期)

      (1.4.2.5) 使用枚举字段

      (1.4.2.6) 使用外部文件和程序

      (1.4.2.7) 字段属性使用案例

    使用外部文件和程序

    使用ExternalFileField类型

      在solr索引的外部,在一个文件里指定一个字段的值,ExternalFileField使这种情况成为了可能.对于这样的字段,文件中包含了字段和字段值的映射.另一种想到的方法就是,在solr索引的时候替换掉指定的文档中的字段,solr从外部文件中查找值.

      注意:ExternalFileField是不可搜的,它们可以用作函数查询或者显示.

      ExternalFileField是很方便的,如果你想要更新许多文档(document)中指定的字段比更新剩下的文档更频繁.例如,假设你已经实现了基于的意见数量的文档排名,你需要每天或者每小时的更新这些排名,然而这文档剩下的内容可能会很少的更新变动,如果没有ExternalFileField,你需要更新每一个文档的排名;使用ExternalFileField是非常有效的,因为所有文档的特殊字段的值都是存储在外部文件中的,能够随心所欲的经常的更新.

      在schema.xml中定义如下: 

    <fieldType name="entryRankFile" keyField="pkId" defVal="0"
        stored="false" indexed="false" class="solr.ExternalFileField" valType="pfloat" />

       keyField属性定义了外部文件中使用的key值,它往往是这个索引的唯一的key.但是当keyField可以用来标记索引中的文档的话,就没有必要了.valType指定了值的类型. ,  or  . 有效的值可以是pfloat, float, tfloat.这个属性可以忽略.

    外部文件格式

      这个文件位于solr索引目录,默认为 . $SOLR_HOME/data.文件名应该是external_fieldname或者external_ fieldname.*.对于上面的例子,文件应该被命名为external_entryRankFile或者external_entryRankFile.txt.

      提示:如果所有文件使用.*(如.txt)显示,这最后的(按名称排序后)将被使用,以前的版本将被删除.

      文件中,等号左边为映射的key字段,等号右边是字段值.

    doc33=1.414
    doc34=3.14159
    doc40=42

      这个列表中的key并不需要是唯一的,这个文件也不需要排序,但是如果排序之后,solr将会更快的执行查询.

    重新加载一个外部文件

      自solr4.1起,可能会定义一个事件监听,在搜索加载或者一个新的搜索开始时,重新加载外部文件,参考 Query-Related Listeners查阅更多信息,solrconfig.xml定义例子如下:

    <listener event="newSearcher"  class="org.apache.solr.schema.ExternalFileFieldReloader" />
    <listener event="firstSearcher"  class="org.apache.solr.schema.ExternalFileFieldReloader" />

    预先分析字段类型

      PreAnalyzedField提供了一种方式,发送到序列化标记(token)字节流,可选择的单独存储字段的值,使字段的信息存储和索引不需要额外的文本处理.在使用Lucene的TokenStream提供的全部丰富的属性时,如果用户想要提交这样的一些字段内容--这些内容已经被已经存在的外部文本处理管道处理(如这些文本内容已经嵌入的tokenized,annotated,stemmed,synonyms等).使用这个字段类型是很有用的.

      序列化的格式使用可插拔的 PreAnalyzedParser接口的实现类.有两个外部实现:

      JsonPreAnalyzedParser:就像它的名称所表示的那样,它解析使用JSON格式来表示字段内容的数据.如果这个字段类型不配置其他的解析器,这个就是默认使用的的解析器.

      SimplePreAnalyzedParser:使用一个简单的严格纯文本格式,在一些条件下比JSON更容易创建.

     只有一个参数parserImpl,参数值必须是一个实现PreAnalyzedParser接口的全类名.默认的参数值时org.apche.solr.schema.JsonPreAnalyzedParser

  • 相关阅读:
    电商数据分析模型
    电商系统中的商品模型的分析与设计
    java枚举使用详解
    运用四色建模法进行领域分析
    UML,Powerdesigner 使用方法
    powerdsigner Association Multiplicity
    UML的类图、时序图表示方法以及惯例
    面向对象分析与设计—四色原型模式(彩色建模、领域无关模型)(概念版)
    知识读书笔记
    知识型读书笔记
  • 原文地址:https://www.cnblogs.com/a198720/p/4285236.html
Copyright © 2011-2022 走看看