You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用AND操作符通过MediaWiki API执行多词条全文搜索?

能否通过MediaWiki API(Wikidata EntitySearch)使用AND操作符进行多词条搜索?

你当前的查询写法有误,EntitySearch服务不支持直接在VALUES语句里用AND连接多个token。要实现多token的AND逻辑全文搜索,有两种可行的实现方式:

方案一:直接在搜索字符串中使用AND逻辑(推荐)

EntitySearch遵循MediaWiki的全文搜索语法,空格默认等价于AND,也可以显式写出AND。把所有token组合成一个搜索字符串传入即可,这种方式只需要调用一次API,效率更高:

SELECT DISTINCT ?item ?itemLabel WHERE {
  ?item (wdt:P279|wdt:P31) ?type .   
  SERVICE wikibase:mwapi {
    bd:serviceParam wikibase:endpoint "www.wikidata.org";
    wikibase:api "EntitySearch";
    mwapi:search "token1 token2 token3"; # 空格默认是AND逻辑,也可写成"token1 AND token2 AND token3"
    mwapi:language "en".
    ?item wikibase:apiOutputItem mwapi:item.
  }  
  SERVICE wikibase:label {bd:serviceParam wikibase:language "en".}
}

方案二:多次调用EntitySearch叠加条件

如果需要对每个token单独配置搜索参数(比如不同语言、不同搜索模式),可以多次调用EntitySearch服务,强制同一个条目匹配所有搜索条件:

SELECT DISTINCT ?item ?itemLabel WHERE {
  ?item (wdt:P279|wdt:P31) ?type .   
  # 匹配包含token1的条目
  SERVICE wikibase:mwapi {
    bd:serviceParam wikibase:endpoint "www.wikidata.org";
    wikibase:api "EntitySearch";
    mwapi:search "token1";
    mwapi:language "en".
    ?item wikibase:apiOutputItem mwapi:item.
  }
  # 同一个条目必须同时包含token2
  SERVICE wikibase:mwapi {
    bd:serviceParam wikibase:endpoint "www.wikidata.org";
    wikibase:api "EntitySearch";
    mwapi:search "token2";
    mwapi:language "en".
    ?item wikibase:apiOutputItem mwapi:item.
  }
  # 同一个条目必须同时包含token3
  SERVICE wikibase:mwapi {
    bd:serviceParam wikibase:endpoint "www.wikidata.org";
    wikibase:api "EntitySearch";
    mwapi:search "token3";
    mwapi:language "en".
    ?item wikibase:apiOutputItem mwapi:item.
  }
  SERVICE wikibase:label {bd:serviceParam wikibase:language "en".}
}

另外需要注意:EntitySearch的搜索语法支持精确匹配(用双引号包裹短语)、OR逻辑(显式写OR)等,可根据需求调整搜索字符串。

内容的提问来源于stack exchange,提问作者Brice FOKO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:36:25