Hana 文本搜索具有不同权重的不同表

Hana Text Search over different tables with different weights

我们想知道 SAP Hana 是否支持对文本在不同 table 中的实体进行文本搜索(例如实体 "Product 42" 引用 table A 中的一个文本和 table B 中的两个文本)。我们希望根据发现此命中的 table 为每个命中分配不同的权重,例如当在 table A 中找到搜索词时,这比在 table B.

中找到的搜索词更重要

好像用谓词"contains()"这个是实现不了的。 "SAP HANA Search Developer Guide" [1] 在第 46 页指出 contains() 中列出的所有列必须属于同一个 table.

是否有 "Application Function Library" (AFL) 提供此类文本搜索功能?

谢谢你和亲切的问候,迈克尔

[1] http://help.sap.com/hana/SAP_HANA_Search_Developer_Guide_en.pdf, 文档版本: 1.0 - 2014-11-26.

同时我发现用Hana进行加权文本搜索可以实现如下:

  • 创建一个属性视图,其中包含来自不同表的相关文本列。

  • 确保选择所有文本 attributes/columns 作为输出,即它们应该出现在 "Output" 下的视图中 "Columns" 当在视图 "Scenario" 中选择 "Data Foundation" 时。您可能还希望至少有一个关键属性作为输出。

  • 单击"Output""Columns"视图中的每个文本属性.此属性的属性应显示在视图 "Property" 中。 Select 选项卡 "Search Properties" 并将 属性 "Freestyle Search" 设置为 "True" 并输入 属性 "Weights for Ranking".

  • 的值

在此之后,您可以使用此属性视图和 SQL 执行文本搜索,例如:

SELECT score(), key_attribute ... 
       FROM "_SYS_BIC"."SOME.PACKAGE/MY_ATTRIBUTE_VIEW" 
       WHERE contains( ( attribute1, attribute2, ... ), 'search term' )
       ...
       ORDER by score() DESC;

请注意 FROM 子句 和搜索词周围使用的不同类型的引号。

您还可以创建一个搜索规则集(在搜索开发人员指南中引用)来为每列注释不同的权重和模糊度阈值。搜索规则集将引用属性视图,在属性视图中您可以包含多个表