我通过YQL使用Yahoo的Answer API。我的查询是“如何烹饪培根”,我需要包含双引号,因为这完全匹配,您可以看到基于网络的搜索结果不同:
http://answers.yahoo.com/search/search_result;_ylt=Av2RD2lUBAad6J5WYYTma6gjzKIX;_ylv=3?p=%22how+to+cook+bacon%22
VS
http://answers.yahoo.com/search/search_result;_ylt=Av2RD2lUBAad6J5WYYTma6gjzKIX;_ylv=3?p=how+to+cook+bacon
问题是我无法逃避我尝试\"
并试图加入%22
的字符。只是想知道是否还有其他方法可行?
这是我没有引号的示例查询:
http://developer.yahoo.com/yql/console/?_uiFocus=answers&q=select%20*%20from%20answers.search%20where%20query%3D%22cars%22%20and%20category_id%3D2115500137%20and%20type%3D%22resolved%22#h=select%20*%20from%20answers.search%20where%20query%3D%22how%20to%20cook%20bacon%22%20and%20type%3D%22resolved%22
答案 0 :(得分:1)
我认为Josh的回答是在通过YQL时引用或转义Answers查询的原始问题的正确轨道。但是,进一步玩这个,我认为真正的问题是试图通过Answers API复制Answers UI结果(反过来又由YQL读取)。
与Answers API相比,我无法匹配Answers website的同一组结果。我认为不同之处在于排名排序顺序,但似乎API中没有。
作为替代方案,您可以使用Answers RSS提要并通过YQL处理它们:
select * from feed where url='http://answers.yahoo.com/rss/search?p=%22how+to+cook+bacon%22&scope=all&fltr=_en&question_status=all&date_submitted=all&category=0&answer_count=any&orderby=rank'
您应该得到类似于以下第一个结果的结果,它似乎与UI中显示的顺序匹配:
<item>
<title>Resolved Question: How to cook bacon?
<link>http://answers.yahoo.com/question/index?qid=20070416221341AAkZArM
<guid isPermaLink="true">http://answers.yahoo.com/question/index?qid=20070416221341AAkZArM
<pubDate>Tue, 17 Apr 2007 5:13:41 GMT
<description>
</item>
在这些RSS结果中,数据量只是一个摘要,但您可以提取问题ID,然后使用get question API method来提取每个问题的所有详细信息。
答案 1 :(得分:0)
您可以在YQL查询中使用单引号,然后在内容中加上双引号,YQL会将带有数据的双引号传递给Answers。像这样:
select * from answers.search where query='"how to cook bacon"' and type='resolved'
向Answers提出以下请求。