如何使用不同大小写的搜索词通过 API 稳健地检查 Wikipedia 页面

发布于 2025-01-04 10:59:54 字数 670 浏览 1 评论 0原文

我有一个网站,允许用户提交野生动物的照片。上传后,他们可以识别照片上的物种,例如“北极熊”。

这触发我使用该搜索词从维基百科获取有关该物种的信息:

$query =  "http://en.wikipedia.org/w/api.php?action=query&rvprop=content&format=json&titles=" . $query;
$pages = file_get_contents($query);

这样的查询返回以下内容之一:

  • 一个 pageid 数组,然后我可以查询该页面的内容
  • 什么也没有,因为根本没有任何匹配项
  • 重定向结果,它允许我用正确的名称解析页面

我遇到的问题与大小写有关。例如,搜索词“Milky stork”不会返回任何内容,甚至不会返回重定向。 “乳鹳”确实有效。将查询中的每个单词大写也不是解决方案,因为可能某些页面是小写的,而大写查询不起作用。没有一致性。

我正在寻找一种方法来使其更加稳健。查询不应该因为大小写错误而失败,这甚至在用户方面都无法预测。

有谁知道这个问题的解决方案?除了尝试所有可能的外壳组合之外?

注意: 有些人可能建议改用 dbpedia,但这并不能满足我的总体需求。

I have a website which allows users to submit photos of wildlife. Once uploaded, they can identify the specie on the photo, for example "Polar bear".

This triggers me to get information from Wikipedia about that specie, using that search term:

$query =  "http://en.wikipedia.org/w/api.php?action=query&rvprop=content&format=json&titles=" . $query;
$pages = file_get_contents($query);

Such a query returns one of the following:

  • An array of pageids, which I can then query for that page's content
  • Nothing, because there simply isn't any match
  • a REDIRECT result, which allows me to resolve the page with the proper name

The problem I have has to do with casing. For example, the search term "Milky stork", returns nothing, not even a redirect. "Milky Stork" does work. Uppercasing each word in the query is not a solution either, as it could be that some pages are in lowercase, whereas the uppercase query does not work. There's no consistency.

I'm looking for a way to make this more robust. It shouldn't be that a query fails because of wrong casing, which cannot even be predicted on the user's side.

Does anyone know of a solution for this? Other than trying every possible combination of casings?

Note: Some may suggest to use dbpedia instead, but this is no solution for my total needs.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧情别恋 2025-01-11 10:59:54

不幸的是,没有简单的解决方案 - 请阅读 http://www.mediawiki.org/wiki/ API:Opensearch#Note_on_case_sensitivity

您可以尝试使用 opensearch 来查找合适的大小写(如果正常查询返回任何可用的内容):
http://en. wikipedia.org/w/api.php?action=opensearch&search=milky+stork&namespace=0&suggest=
会给你

    ["milky stork",["Milky Stork"]]

Unfortunatelly, there is no easy solution - read http://www.mediawiki.org/wiki/API:Opensearch#Note_on_case_sensitivity

You can try instead use opensearch to find appropriate casing (if normal query returns nothing usable):
http://en.wikipedia.org/w/api.php?action=opensearch&search=milky+stork&namespace=0&suggest=
will give you

    ["milky stork",["Milky Stork"]]
屋顶上的小猫咪 2025-01-11 10:59:54

我认为尝试每一种可能的组合都是可行的解决方案。因此,您的查询可能如下所示:

http://en.wikipedia.org/w/api.php?action=query&rvprop=content&format=json&titles=Milky stork|Milky Stork

请注意,维基百科上的第一个字母不区分大小写。

I think trying every possible combination is a viable solution. So, your query might look like:

http://en.wikipedia.org/w/api.php?action=query&rvprop=content&format=json&titles=Milky stork|Milky Stork

Note that the first letter is not case-sensitive on Wikipedia.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文