搜索食谱

  1. 文本约束
  2. 语言限制
  3. 架构限制
  4. 元架构限制
  5. 评分和排名
  6. 其他限制

本页面包含一系列食谱,介绍了使用 Search 服务限制搜索查询的不同方法。

文本约束

Freebase 实体的文本数据来自其名称、别名、其键和其他文本属性,最后来自其维基百科维基百科定位数据(如果它与特定语言的维基百科主题协调一致)。

文本约束因语言而异;目前支持 18 种语言。目前为止,英语的覆盖率最高,并且是默认语言。

如需查看当前支持的所有语言代码的列表,请访问以下网址:

https://www.googleapis.com/freebase/v1/search?help=langs&indent=true

系统会使用 query 参数指定文本约束条件。其语言通过 lang 参数指定。例如:

query: "gore"
query: "gore" lang: "fr"
query: "gore" lang: "de"

在编制索引期间,文本数据会以特定语言的方式归一化。例如,在英语中,文本会被转换为小写,而重音符号会被移除。在查询时,系统会对查询文本执行特定语言的标准化。例如:

query: "beyoncé"
query: "beyonce"

多个参数用于控制文本约束的匹配方式。将 prefixed 参数设置为 true 仅会针对名称和别名触发前缀匹配(针对其他文本数据触发常规匹配)。例如:

query: "bob dy" prefixed: true

stemmed 设置为 true 仅会针对名称和别名触发匹配匹配(而对其他文本数据触发常规匹配)。词干匹配可用于粘贴由复数形式或其他语法形式引入的特定语言的后缀差异。例如:

query: "potatos" stemmed: true

用英文双引号 ("") 括住查询文本会触发词组匹配。查询中的文本令牌必须在匹配的实体的文本数据中并排出现。例如:

query: "\"to be or not to be\""

使用 namealiastype 参数来匹配名称中包含您要匹配的字词的人员和个人实体。例如:

filter: "(all name:gore alias:gore type:/people/person)"

同样,以下示例仅匹配具有匹配 alias/people/person 实体,而不匹配其 name 实体:

filter: "(all (not name:gore) alias:gore type:/people/person)"

除了指定应匹配的文本字段之外,您还可以通过在操作数和文本字段之间插入以下某个修饰符来指定匹配方式:

  • {word}:要求字符串中的字词与文档相应文本字段中的字词匹配。(默认)
  • {phrase}:要求字词在文档的相应文本字段中以相同的顺序并排出现。
  • {full}:与 {phrase} 类似,但要求短语与文本字段完全匹配,而不仅仅是在文本字段内。换句话说,完全匹配。

例如,要找到由 Marc Broussard 创作的名为 Home 的音乐单曲,请使用如下过滤条件:

filter: "(all type:/music/single name{full}:home /music/track/artist:"Marc Broussard")"

语言限制

如文本限制所述,lang 参数用于指定使用哪些语言归一化规则将文本转换为查询标记。查询的语言还会限制结果排名,因为 freebase-search 会从相应的语言维基百科中获取特定语言的相关性信号。

目前支持 9 种语言:英语 (en)、西班牙语 (es)、法语 (fr)、德语 (de)、意大利语 (it)、葡萄牙语 (pt)、中文 (zh)、日语 (ja) 和韩语 (ko)。目前为止,英语的覆盖率最高,并且是默认语言。

同时搜索多种语言

lang 参数接受以英文逗号分隔的语言代码列表,该列表会使搜索以指定的所有语言完成,并且结果会排名第一的语言,并以结果实体列表中首个实体的名称列出。

例如:

以下搜索字词用德语和法语搜索德语“Sonnenblume”。它会以法语显示排名和显示结果:

query: "Sonnenblume" lang: "fr,de"

以下用英语搜索的语言是韩语,并显示了韩语名称。查询中的英语部分是 expressed_by 约束条件中的“korean”一词:

filter: "(all expressed_by:korean type:/film/film)" lang: "ko,en"

架构限制

架构约束条件是通过 typedomain 参数指定的。type 对应于实体的 /type/object/type 属性值。

例如,下列搜索将搜索限制为仅包含用户:

query: "gore" type: "/people/person"

domain 对应于实体的所有 /type/object/type 值的 /type/type/domain 值。

例如,以下示例将搜索限制为仅限使用 /film 域名的法语实体:

query: "babar" domain: "/film" lang: "fr"

您还可以使用各个 Freebase 属性来过滤查询。例如,以下示例将搜索限制为来自加拿大的用户:

 query "john" filter: "(all type:/people/person /people/person/nationality:"Canada")"

元架构限制

Metaschema 限制条件按语义谓词过滤实体。这些谓词是基于 Freebase 属性集合构建的更高级别的概念,它们描述了类似的语义关系。

元架构限制条件使用 filter 参数操作数与实体名称或 MID 限制条件结合使用。

支持的 Metaschema 过滤器操作数

Freebase 搜索支持以下 Metaschema 过滤器操作数。您可以通过点击表格中的链接或使用 Freebase 搜索示例应用来试用各个示例。

操作数名称 示例
abstraction “五彩纸屑菜肴”试试看)。
filter: "(all abstraction:fettuccine)"
abstraction_of “西部布尔沃克机车”类试试看)。
filter: "(all abstraction_of:"Western Bulwark")"
adaptation “Works La Traviata”改编自试用一下。
filter: "(all adaptation_of:"La Traviata")"
administered_by “戛纳奖”试试看)。
filter: "(all type:awards administered_by:cannes)"
administers “Synapse 报纸经营者”试试看)。
filter: "(all administers:synapse)"
appears_in “魔法长笛”中的角色试一试。
filter: "(all appears_in:"magic flute")"
“下图所示为 der Zauberflöte”试试看)。
filter: "(all appears_in:"Die Zauberflöte")" lang: "de"
broader_than “空客 319 所属飞机系列”试试看)。
filter: "(all broader_than:"Airbus A319")"
category “法国女演员”试试看)。
filter: "(all category:female origin:france notable:actor)"
“法国女演员”(变体)试试看)。
filter: "(all category:female origin:france practitioner_of:actor)"
“加利福尼亚州或法国火山”试试看)。
filter: "(all category:volcano (any part_of:california part_of:france))"

“快餐”试试看)。

filter: "(all category:pasta)"

center “有一家在旧金山运营枢纽的航空公司”试试看)。
filter: "(all type:airline center:"San Francisco")"
“拥有旧金山和亚特兰大枢纽的航空公司”试用一下。
filter: "(all type:airline center:"San Francisco" center:atlanta)"
“旧金山的报纸”试试吧。
filter: "(all type:/book/newspaper center:/m/0d6lp)"
center_for “旧金山 49 人运动设施”试试看)。
filter: "(all center_for:"san francisco 49ers")"
certification ”- Wim Wenders 发布的评分为 R 的电影试试看)。
filter: "(all type:/film/film contributor:wenders certification:r)"
character “以 Papageno 为字符的作品”试试看)。
filter: "(all character:papageno)"
child “Bill Clinton 的父母”(欢迎试用)。
filter: "(all child:"bill clinton")"
contributed_to “谁是银翼杀手的贡献者”试试看)。
filter: "(all contributed_to:"Blade Runner")"
contributor “Steven Spielberg”的电影(不妨试试)。
filter: "(all type:/film/film contributor:"Steven Spielberg")"
由 Steven Spielberg 创作的电影,使用 MID,而不是撰稿人姓名。(试试看)。
filter: "(all type:/film/film contributor:/m/06pj8)"
使用 Harrison Ford 制作的电影试试看)。
filter: "(all type:/film/film contributor:"Harrison Ford")"
created (谁负责接收铃铛图标)试试看)。
filter: "(all created:"for whom the bell tolls")"
created_by “Google 的软件”试试看)。
filter: "(all notable:software created_by:google)"
discovered “半径发现者”试试看)。
filter: "(all discovered:radium)"
discovered_by “Curie 的发现”(不妨试试)。
filter: "(all discovered_by:curie)"
distributed_by “NPR 节目”试试看)。
filter: "(all type:show distributed_by:npr)"
exhibited “根据法律规定,在哪里服务中断”试试看)。
filter: "(all exhibited:"down by law")"
exhibited_at “2010 年戛纳电影节”推荐的作品试试看)。
filter: "(all type:"nominated work" exhibited_at:"2010 Cannes Film festival")"
expressed_by “全球图书”试试看)。
filter: "(all type:book expressed_by:esperanto)"
fictional_link “与米老鼠相关的虚构角色”试试看)。
filter: "(all type:/fictional_universe/fictional_character fiction_link:"mickey mouse")"
genre “哥特式大教堂”试试看)。
filter: "(all category:cathedral genre:gothic)"
“Viollet-le-duc”的哥特式大教堂试试)。
filter: "(all category:cathedral genre:gothic created_by:viollet)"
identifies ”具体内容说明了西南航空的标识。试试看)。
filter: "(all identifies:"Southwest Airlines")"
leader “Mitch Kapor 公司”试试看)。
filter: "(all type:company leader:kapor)"
leader_of “巴黎市长”试试看)。
filter: "(all title:mayor leader_of:paris)"
made_of "蜡像画"试试看)。
filter: "(all type:painting made_of:wax)"
means_of_demise “执行过的政治人物”(试用)。
filter: "(all type:politician means_of_demise:"capital punishment")"
member_of “非洲君主”试试吧)。
filter: "(all type:monarch member_of:africa)"
“民主主义政治人物和著名演员”试试看)。
filter: "(all type:politician member_of:democratic notable:actor)"
narrower_than “v8 引擎示例”试试看)。
filter: "(all type:engine narrower_than:"v8 engine")"
occurs_in 罗马尼亚语”(试试)。
filter: "(all type:language occurs_in:romania)"
origin “奥地利共和党州长”试试看)。
filter: "(all title:governor member_of:republican origin:austria)"
owner “归福特公司所有”试试看)。
filter: "(all type:make owner:ford)"
owns “谁是小牛公司的所有者”试试看)。
filter: "(all owns:mavericks)"
parent “Al Gore’s children”(儿童,试试)。
filter: "(all parent:"al gore")"
“Lisp 编程语言的后代”试试看)。
filter: "(all type:/computer/programming_language parent:lisp)"
part_of “瑞典湖泊”试试看)。
filter: "(all type:lake part_of:sweden)"
2008 年夏季奥运会比赛试试看)。
filter: "(all type:competition part_of:"2008 summer olympics")"
participant “Bowie 音乐会”试试看)。
filter: "(all participant:bowie type:concert)" 
participated_in “参加奥运会的著名奥地利滑雪运动员”(试试看)。
filter: "(all notable:skier member_of:austria participated_in:olympics)"'
peer_of “阿尔·戈尔的政治人物同行”试一试。
filter: "(all notable:politician peer_of:gore)"
permits_use_of “柴油引擎”试试看)。
filter: "(all permits_use_of:diesel)"
portrayed “描绘约翰·列侬”的演员(试试看)。
filter: "(all notable:actor portrayed:"john lennon")"
portrayed_by "由哈里森·福特描绘的角色试试看)。
filter: "(all portrayed_by:"Harrison Ford")"
practitioner_of “女性非裔美国律师”试试看)。
filter: "(all category:female category:"african american" practitioner_of:lawyer)"
preceeding 《指环王 2 塔》续作(体验一下)。
filter: "(all type:/film/film preceeding:"The Lord of the Rings, the two Towers")"
produced_by “Apple 计算机”试试看)。
filter: "(all type:computers produced_by:apple)"
publication ”(此图书的第一版为 /m/0clw238 试试看)。
filter: "(all publication:/m/0clw238)"
publication_of “La Traviata”发行试试看)。
filter: "(all publication_of:"La Traviata")"
service_area “加利福尼亚广播电视台”试试看)。
filter: "(all type:broadcaster service_area:california)"
status “消化瑞士冰川”试用一下。
filter: "(all type:glacier status:retreating part_of:switzerland)"
subclass_of “种类的泳装”试用一下)。
filter: "(all subclass_of:swimwear)"
subject (关于大屠杀的电影)(试试看)。
filter: "(all type:film subject:holocaust)"
“有关数学的图书”试试看)。
filter: "(all type:book subject:mathematics)"
subsequent 《魔戒 2 塔》前传试试看)。
filter: "(all type:/film/film subsequent:"The Lord of the Rings, the two Towers")"
succeeded_by “哪款汽车平台是福特 B3 平台的成功典范试试看)。
filter: "(all succeeded_by:"ford b3 platform")"
succeeds “谁成功了斯图尔特故居”试试看)。
filter: "(all succeeds:stuart)"
superclass_of “类冠心病属于”试试看)。
filter: "(all superclass_of:"coronary heart disease")"
title “Google 工程师”(试试看)。
filter: "(all title:engineer member_of:google)"
tookplace_at “战斗在 Marengo”试试看)。
filter: "(all type:battles tookplace_at:marengo)"
use_permitted_by “iPhone 支持的文件格式”试试看)。
filter: "(all type:"file format" use_permitted_by:iphone)"

评分和排名

Freebase 实体在索引编制期间会计算其固有的相关性得分(排名),该值取决于 Freebase 和 Wikipedia 中的入站和出站链接计数。一些热门 Freebase 实体也有由 Google 计算的热门程度得分。默认情况下,系统会在查询期间合并这两个得分。

如果存在文本限制,系统会根据搜索索引返回的命中数计算文本匹配得分,并将其与相关性得分合并。

FreebaseSearch 结果始终按最终得分排序,得分最高按分数排序。

通过评分参数,可以控制使用哪些相关性得分组成部分来计算最终得分:

freebase:仅使用 Freebase 相关性得分。

query: "beyoncé" scoring: freebase

entity:同时使用两个相关性得分,将缺少的 Google 得分替换为 1.0。这是默认值。

query: "beyoncé" scoring: entity

schema:在查找类型、属性或网域等架构实体时使用。架构实体的链接计数计算方式不同。

query: "performance" scoring: schema

其他限制

您可以使用索引参数(带或不带参数)按索引标记过滤实体。系统会在编入索引期间标记实体,每个标记对应一个或多个在搜索期间运行成本过高的 Freebase 查询:

commons 是一种标记,可用于将架构搜索限制为仅返回 Freebase Commons 架构。例如,与文字“颜色”相匹配的 Freebase Commons 类型

query: "color" type: "/type/type" with: "commons"

gg 是一种标记,可用于将搜索范围限制为 Google 热门程度得分存在或不存在的实体。

query: "1923" type: "/people/person" with: "gg"
query: "1923" type: "/people/person" without: "gg"

without 参数相当于过滤条件表达式中的否定。

query: "color" limit: 5 type: "/type/type" without: "commons"
query: "color" limit: 5 type: "/type/type" filter: "(not with:commons)"