0

我已获得一组(已批准)要求和已批准的解决方案,可将 Google 自定义搜索实施到现有网站中。

本网站有以下内容:

  • 工作

    • 第一类
    • 第 2 类
    • 第 3 类
  • 普通页面

    • 第一类
    • 第 2 类
    • 第 3 类

搜索功能的要求是人们可以使用 CheckBoxes 来过滤结果。因此,如果以下情况属实:

[x] Category 1
[ ] Category 2
[x] Category 3

然后不会显示类别 2 的页面。但是,还有:

[x] Show jobs only

我如何通过 Google 自定义搜索来实现这一点?我已经阅读过PageMap,使用<meta>标签等。但是我无法理解如何根据这些来过滤结果。。?

我看这里:谷歌自定义搜索 API - 排序/过滤

然而,它似乎并没有回答我的担忧。我仍然有点迷失在文档中。

这种事情可能吗?有没有人有一些更详尽的例子的链接?

我曾想过尝试内存过滤.. 但是,如果 Google在选中复选框时恰好在 10 个结果中返回了 1 个作业页面[x] Show jobs only.. 那么用户只会在页面上获得 1 个结果。

我倾向于使用自定义搜索引擎的基于 XML 的结果集。但是,如果需要更改,我愿意接受建议。

任何建议表示赞赏。

4

1 回答 1

10

我已经设法弄清楚了......只有通过大量的试验和错误。

首先,PageMapXML 响应中的示例元素:

<PageMap>
    <DataObject type="metatags">
        <Attribute name="creationdate" value="D:20100902144455+10'00'"/>
        <Attribute name="creator" value="Adobe InDesign CS5 (7.0)"/>
        <Attribute name="moddate" value="D:20100902144510+10'00'"/>
        <Attribute name="producer" value="Adobe PDF Library 9.9"/>
    </DataObject>
</PageMap>

Google 的过滤只会匹配由空格、特殊字符等分隔的单个单词。因此,如果我想搜索其中包含“CS5”的“creator”,我将使用以下查询字符串:

?q=My+Search+Text+Here+more:pagemap:metatags-creator:CS5
                                    ^^^^^^^^ ^^^^^^^
                                      type    name

上面的“类型”和“名称”指的是DataObjectAttribute元素属性名称。最后一部分是您要过滤的单词。

所以现在我应该能够将以下内容转储到类别 1 中的页面:

<PageMap>
    <DataObject type="metatags">
        <Attribute name="category" value="Category1"/>
    </DataObject>
</PageMap>

或者..对于一份工作:

<PageMap>
    <DataObject type="metatags">
        <Attribute name="IsJobPage" value="Yes"/>
    </DataObject>
</PageMap>

..并使用这样的查询:

?q=My+Search+Text+Here+more:pagemap:metatags-category:Category1,Category3
?q=My+Search+Text+Here+more:pagemap:metatags-IsJobPage:Yes

第一个示例返回元标记名称为“category”且包含值“Category1”“Category3”的任何页面。

希望这个答案可以避免有人扯掉他们的头发……就像我几乎一样。

于 2013-02-06T01:13:26.147 回答