【问题标题】:Freebase query result buried under nonsenseFreebase查询结果被废话埋没
【发布时间】:2014-02-13 15:44:09
【问题描述】:

一个关于freebase的初学者问题:

我正在寻找名为“O”的电影的 imdb id。如果我使用 freebase.com 网站上的搜索框并将搜索类型限制为 all:/film/film,那么我会得到一个高质量的结果,其中最佳匹配位于顶部:

http://www.freebase.com/search?query=o&lang=en&all=%2Ffilm%2Ffilm&scoring=entity&prefixed=true

但这不包括 imdb id。当我尝试使用查询编辑器重新创建和优化此搜索时,我无法弄清楚如何进行“一般查询”。我能想到的最好的办法就是像这样进行模糊名称搜索:

[{
  "type": "/film/film",
  "name": null,
  "name~=": "o",
  "imdb_id": [],
  "rottentomatoes_id": []
}]

结果包含我想要的信息,但电影“O”只是列表中的第 12 个结果,被大量废话所掩盖:

http://www.freebase.com/query?lang=%2Flang%2Fen&q=[{%22type%22%3A%22%2Ffilm%2Ffilm%22%2C%22name%22%3Anull%2C%22name~%3D%22%3A%22o%22%2C%22imdb_id%22%3A[]%2C%22rottentomatoes_id%22%3A[]}]

如何提高结果的质量? "?query=o" 使用了"name~=":"o" 没有的什么特殊魔法?

【问题讨论】:

    标签: freebase


    【解决方案1】:

    当您使用query=o 时,freebase 会对结果进行一些智能排序,首先显示完全匹配,然后是不太精确的匹配。

    通过查询name ~= o,您搜索的不是名称为“O”的电影,而是名称中包含“O”的电影(~= 运算符)。如果您想搜索特定的电影名称,请指定确切的名称:

    [{
      "type": "/film/film",
      "name": "o",
      "imdb_id": [],
      "rottentomatoes_id": []
    }]
    

    这将导致输出:

    {
      "result": [{
        "imdb_id": [
          "tt0184791"
        ],
        "name": "O",
        "type": "/film/film",
        "rottentomatoes_id": [
          "o"
        ]
      }]
    }
    

    【讨论】:

    • 抱歉,我才意识到我的问题问得不是很好:我需要以一定的模糊性进行查询。我给出的例子不是最好的,我会寻找更好的......无论如何,感谢您指出 ~= 表示“包含”,而不是“模糊匹配”,正如我错误地假设的那样。跨度>
    • @MartinJ.H.它不完全是“包含”,而是“匹配”。 name ~= o 与正则表达式匹配名称与 o 相同 - 有效地执行“包含”。
    • 并非如此。 "name~=":"o" 匹配带有 word "o" 的主题。如果你想要一个真正的包含,你需要“o”(这可能会超时)。此外,搜索按受欢迎程度加权结果,MQL 没有这样做。
    【解决方案2】:

    如果搜索为您提供了您想要的主题,为什么不直接使用 output parameter 将 IMDB ID(或您想要的任何其他内容)添加到您要求它返回的输出中?

    【讨论】:

    • 能否举例说明如何使用输出参数?
    • 文档页面上有大量示例我添加了一个链接,因为它显然无法使用 Google 找到。
    猜你喜欢
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    相关资源
    最近更新 更多