初识Endeda Concepts

Endeca Concepts:

1 Records: 即我们常讲的记录,在Endeca中就是我们要搜索的对象。

我么可以从两个层面来理解:

  • 可以理解为源数据 转化为 索引数据 之后的每一条记录,可以和数据库的表的记录对应。
  • 从Endeca 内部讲,可以理解为properties 和 dimension的 一个集合。因为我要通过dimension或者properties 去查询,那么 记录里面必须得有这个dimension或者property才行

2 Dimension & DimensionValue

Dimension 只是一个针对数据集的逻辑视图,在Endeca应用中可以有很多的Dimendion. 他的作用主要是用来对结果集进行分类。这样的话,应用中就很方便对结果进行处理。

 

Dimension可以有层级结构,和category类似。 Dimension 和 Dimension Value的区别就在于

如果没有层次结构,那么Dimension和 Dimension Value是等价的。

如果有层次结构:在dimension的层次里,最顶端的dimension value 就是root dimension.

For instance, 酒这个对象,就是一个Root Dimension. 就按性质可以分为白酒,红酒,啤酒。 白酒又可以细分为 茅台,五粮液;啤酒可以细分为哈尔滨啤酒和雪花啤酒;红酒有可以分为波尔多和拉菲。根据业务需要还可以继续细分,比如在按照酒的度数或者产地等因素进行细分, and so forth.

每一个dimenison value 都可以有一个或者多个child dimension value.但是一个dimension value 最多只有一个parent dimension value.这个和数据结构的Tree 有点相同。

 

查询的结果 我们没有得到Navigation对象,

从这个对象我们可以获取当前应用的所有的Dimension 和 针对该查询的Diemnsion。

Navigation.getCompleteDimension: 得到所有的Dimension

Navigation.getDescriptorDimensions:得到针对该查询的Diemsion.比如查询参数是N=10001+10003+20005,那么只会得到这三个dimension.

 

 

Dimension 下面又有几个核心的概念:

  • Refinements:当前dimension 是不是有child dimension value 再进一步用于对结果集进行分类,一般最底部的dimension value 就不能refine records.
  • Location: 获取当前 dimension 在 dimension 层级关系中的一些信息。
  • Descriptor:就是针对当前diemsion的具体描述:dimensionId,dimensionName,dimValId,dimValName,以及对应的property 和 同义词。
  • CompletePath: 获取当前选中的dimension的完整路径,比如产地是一个dimension 而且是root, id=100, 下面有2个child dimension value, {["中国":101],["美国":102]},如果我选中的中国,那么completePath就会有2个数据:DimVal:产地->DimVal:中国

    如果有隐式的,还包括隐式dimension.

           Returns the complete path of dimension values consolidating ancestors, descriptor, and implicits in      this order.

  • Root:就是最顶端的dimension,用上面的例子就是产地。

而这些除了就之外都叫做locations或者dimension values.

 

In essence(其实)Endeca Dimension 就是Dimension Value的集合。然后以Tree的形式组织结构。

最顶层的Dimension Root Dimension.

一个Dimension values可以被视为location.

 

在这些明确之后就可以继续宁导航查询。Navigation red, 就可以得到波尔多和拉菲。相当于Select * from wine where wineType=”红酒。他就会返回这个Dimension下所有的value

 

 

How to transform the source property to endeca property.

 

在转换期间,可能发生以下事情:

 

1 映射soucre property 成为一个dimension.

2 映射soucre property成为一个 Endeca Property.

3 并不是么一个soucre property都需要去转换,对于不必要转换的或者对于搜索没有任何帮助的我们可以将这个属性忽略掉。

 

Compare the Endeca Property to the Dimension?

最大的区别就是Endeca Property 不支持导航。

相似点:

都是source property映射而来的;

都可以被搜索和展示,只不过不是通过导航来查询的。

都是通过键值对的形式构成的。Property Name/Property Value;

Dimension Name/Dimension Value;

 

需要映射成那种数据形式,根据业务情况而定。如果是一些描述性质的东西,那么可以映射成属性,如果用于search,那么我们就必须应生成dimension.

 

一般情况,property的信息可能比dimension要多,比如价格范围。对于我们所选择的价格范围可以使用dimension,但是价格下具体的价格则是根据属性的来。

 

Auto-Derive dimensions from source property.

 

对于数据库表结构,我们可以横向或者纵向进行映射。

 

 

使用Keyword 关键字搜索

 

 

Record Search:

  • 用户自定义的查询:根据key/term 形式进行检索查询
  • 根据导航查询返回的结果进行进一步的查询,一般做法是NavigationState.inform(results), 然后基于导航状态构建一个Record Query.

是根据一个property或者dimension   作为search key

指定一个term 或者terms进行搜索。

如果searc key指定多个terms,那么,返回的结果必须包含所有的terms

 

比如Search Key 是 酒 ,terms 是白酒,那么查询结果就是所有白酒都会显示出来。

 

Dimension Search:(前提是在Diemsnion 需要 enable searchable

和navigation query and record search 区别于:

  • 他只是用于查询dimension value.
  • 他只需要一个term,不需要key

使用场景:比如已知dimension name 或者dimension value name 查询该dimension,那么就需使用这个搜索。

一:Default Search:

无论提供一个term(red) 还是 多个term(red type)都只会将term作为一个整体用于查询,这个dimension value name 必须包括查询使用到的terms.

他会返回所有包括terms 名字的dimension value.

 

二:Compound Search

 

1 不管你提供几个term,Endeca 都会拆分成单个,进行查询

2 根据得到的结果然后进行导航查询,看有无至少一条记录返回,如果有就认为有效,没有就没效。

3 然后再根据第二步的结果返回相应的结果


两者使用的时机:

1 如果你的termsdimension 的一部分就是用dimension search

 

2 如果你搜素的不是dimension 层级关系的一部分的未结构化的数据,那么就需要使用record search.

 

额外的搜索特征:

拼写功能使得search query返回期望的结果集,尽管用户输入错误。

Did You Mean:比如你搜索一个 java 可能返回java web 游戏,java 下载,javascript等等。

Stemming and thesaurus 允许你Endeda 应用返回相关的一些概念的集合,比如我搜索小偷 那么贼也被查出来了。

Relevance Ranking:用于控制结果返回的顺序。

 

 

 

 

 

 

猜你喜欢

转载自nicky19870612.iteye.com/blog/2003552
今日推荐