基本概念

这一部分将对SF1R基本概念和数据组织进行介绍。

collection

SF1推荐引擎是基于open API的服务器,它将各个功能封装成一系列的API并开放给用户使用, 用户可以使用JSON串组装请求。下面给出发送JSON请求的例子:

{
    " collection ": " example " ,
    " resource ": {
        " rec_type ": " BOE " ,
        " max_count ": 20 ,
        " USERID ": " user_001 "
    }
}

对于上面的JSON请求,SF1会返回如下的结果:

{
    " header " : { " success " : true } ,
    " resources " : [
    {
        " ITEMID " : " item_001 " ,
        " weight " : 0.9 ,
        " reasons " : [
            { " event " : " purchase " } ,
            { " ITEMID " : " item_011 " }
        ],
        " name " : " iphone " ,
        " link " : " www . shop . com / product / item_001 " ,
        " price " : " 5000 " ,
        " category " : " digital "
    },
    {
        " ITEMID " : " item_002 " ,
        " weight " : 0.8 ,
        " reasons " : [
            { " event " : " shopping_cart " } ,
            { " ITEMID " : " item_012 " }
        ],
        " name " : " ipad " ,
        " link " : " www . shop . com / product / item_002 " ,
        " price " : " 6000 " ,
        " category " : " digital "
    }
  ]
}

在上面给出的例子中,可以看到SF1的每个请求都必须指定Collection字段。该字段是 SF1的一个非常重要的概念,类似与RDBMS表。 在SF1中, collection是中具有同种结构的文档集合,由一批SCD文件组成, SF1使用 collection作为基本构件,管理系统中各类文档集合。同时,SF1对每个collection的 操作都有相应的config文件指定。

Note

config文件是文件名与collection名称相同的XML文件。

什么是SCD,格式

文档集合是构建搜索服务的第一步工作。 为了能够对文档进行检索,首先应该生成文档的索引数据。 SF1的索引数据是通过索引SCD格式的文档生成的。 SCD是structured crawled document的缩写,SCD文档是一个文本文件,必须符合一定的规则才能被索引。

命名规则

SF1R通过文件名验证SCD文件的有效性,其命名规则如下:

B-<document collector ID(2Bytes)>-<YYYYMMDDHHmm(12Bytes)>-<SSsss(second,millisecond,5Bytes>-<I/U/D/R(1Bytes)>-<C/F(1Byte)>.SCD

任何不符合上述命名规则的文件都将被视为非法文件而丢弃。

I/U/D/R给出了SCD文档类型,各个类型意义如下所示:
I(nsert) U(pdate) D(elete) R(Type)
索引新文档 更新文档 删除文档 RType

Note

当I,U,D类型的文档同时存在时,将按照顺序:I,U,D依次进行索引。

下面给出SCD文件名示例:

B-00-201302271306-31564-U-C.SCD

文件结构

SCD文档是一个文本文件,由一系列的K-V对组成,K-V值均由string标示,下表给出了一个SCD结构的示例:

域名 类型 描述
ID string 唯一的文档ID
date string 文档的创建日期
title string 文档标题
subtitle string 文档的副标题
writer string 作者的名字
writeremail string 作者的邮箱地址
content string 文档内容

Note

SCD中每一个K-V对,遵循格式“<FiledName>Field Content”。

下面给出一个SCD文档的实例:

<DOCID>#1#1166452314021
<title>SomeTitle 1
<writer>SomeAuthor 1
<writeremail>SomeAuthor@gmail.com
<content>.......
<DOCID>#1#1166452314023
............

Insert 和 Update类型的SCD文档实例如下:

<DOCID>#1#1166452314021
<Date> 20030922203324
<title> WISEnut changes the search engine landscape yet again
<subtitle> WISEnut scores another deal with a major corporation
<writer>Some Author
<writeremail>SomeAuthor@gmail.com
<content>WISEnut has agreed to provide search solution service to a leading credit card company in Korea. The service is expected to start at the beginning of the next month.

Delete类型的文档实例如下:

<DOCID>#1#1166452116647
<DOCID>#1#1166452314021

Note

Delete 类型的SCD文档, 只需列出要删除的文档id。

数据文件目录

这部分对SF1的数据文件进行介绍

数据文件目录结构如下:

./
|---collection
    |---example
        |---collection-data
        |---query-data
        |---scd
            |---index
            |---recommend
                |---item
                |---order
                |---user
|---config
    |---example.xml
    |---sf1config.xml
|---log
|---query-support

sf1目录结构介绍:

  • collection 目录下包含每个collection的目录,每个目录的名称为collection的名称。以example为例,该目录下存放有3 个子目录:collection-data, query-data, scd。

    • collection-data: 下面有两个子目录-default-collection-dir, default-recommend-dir, default-collection-dir 下面存放索引数据和挖掘数据,default-recommend-dir下面存放推荐数据。
    • query-data: 存放 query-recommend, autofill 等特性的数据。
    • scd: index子目录下存放预索引的scd文件。recommend子目录下有三个子目录: item, user,order. 分别存放item, user, order相关的scd文件。
  • config: 存放所有配置文件和结构定义文件。结构定义文件存放在schema子目录下。 配置文件包括两部分,一是系统配置 文件:sf1config.xml, 和collection相关的配置文件,如example.xml, 所有和collection相关的配置文件都放在该目录下。

  • log: 存放sf1的日志文件。

  • query-support: 存放和querycorrection,autofill等特性相关的数据。