如何使用本机搜索引擎查找管道?

时间:2018-06-02 11:16:56

标签: mediawiki mediawiki-api

我正在使用url API执行字符串搜索。我的字符串包含" |",但API将其解释为魔术字符而不是我的搜索字符串的一部分。例如:我想找到逐字文本 MyPrefix | CommonGround ,但这两个字符串不会被搜索为连接块。

https://gunretort.xyz/api.php?action=query&list=search&srsearch=MyPrefix|CommonGround&srwhat=text

(请注意,此问题中的网址可能无法在您的浏览器中加载。它们仅用于显示我的网址语法)

我试过替换|使用" {{!}}",但结果是相同的。

https://gunretort.xyz/api.php?action=query&list=search&srsearch=MyPrefix{{!}}CommonGround&srwhat=text

Doc表示要用作值分隔符,如果我需要使用bar作为字符串。

https://gunretort.xyz/api.php?action=query&list=search&srsearch=<US>MyPrefix|Terrorism&srwhat=text&srnamespace=<US>0<US>3000&format=xml

但得到:

  

参数&#34; srnamespace&#34;:03000

的无法识别的值

还尝试替换html解码的版本&#31;

https://gunretort.xyz/api.php?action=query&list=search&srsearch=&#31;MyPrefix|Terrorism&srwhat=text&srnamespace=&#31;0&#31;3000&format=xml

但未被承认:

  

{       &#34;错误&#34;:{           &#34;代码&#34;:&#34; nosearch&#34;,           &#34; info&#34;:&#34; \&#34;搜索\&#34;参数必须设置。&#34;       }}

尝试使用百分比编码进行转义(例如,使用%1F代替)。它没有用:

  

警告:跳过错误选项&#39; MyPrefix%1FCommonGround&#39;用于参数   &#39;使用&#39;

尝试用分隔符作为前缀。给出API错误。

https://gunretort.xyz/api.php?action=query&list=search&srsearch=%1FNewTag%1FSpinach&srwhat=text&srnamespace=0|3000&format=xml

返回

  

Doc说srsearch不是一个多值参数 - 它只能传递一个传递给搜索引擎的值。但是,我发现搜索引擎会对待&#34; |&#34;作为AND的角色。也许某些层错误解释了参数。

请参阅https://phabricator.wikimedia.org/T194016

似乎嵌入式管道未被视为字符串的一部分。 见https://phabricator.wikimedia.org/T194039

也许如果我们可以确定哪个层对管道做出反应,我们就可以找到逃脱它的方法。但是,从理论上讲,如果srsearch不支持多值,那么我认为如果嵌入式管道破坏了srsearch,这就是一个错误。

我尝试将管道转移为%7C

https://gunretort.xyz/api.php?action=query&list=search&srsearch=NewTag%7CAnteater&srwhat=text&srnamespace=0|3000

匹配的网页包含:

  

NewTag x Anteater

  

Anteater banana NewTag

但应仅匹配包含

的页面
  

NewTag |食蚁兽

我试图用引号(实际或url编码)包围整个字符串。

https://gunretort.xyz/api.php?action=query&list=search&srsearch=%22NewTag%7CAnteater%22&srwhat=text&srnamespace=0|3000|3004

https://gunretort.xyz/api.php?action=query&list=search&srsearch="NewTag|Anteater"&srwhat=text&srnamespace=0|3000|3004 

同时找到:

  

NewTag |食蚁兽

  

NewTag Anteater

我们不想找到第二个(管道被解释为空间)。

可能的解决方案: 连接字符? 扩展:elasticSearch

0 个答案:

没有答案