Google自定义搜索过滤

时间:2013-02-06 00:16:48

标签: google-search google-search-api google-custom-search

我获得了一系列(已批准的)要求和已批准的解决方案,可将Google自定义搜索功能应用到现有网站。

本网站有以下内容:

  • 工作

    • 第1类
    • 第2类
    • 第3类
  • 正常页面

    • 第1类
    • 第2类
    • 第3类

搜索功能的要求是人们可以使用CheckBoxes来过滤结果。如果以下是真的:

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

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

[x] Show jobs only

我如何通过Google自定义搜索实现此功能?我已经阅读了PageMap,使用<meta>标签等等。但是我无法理解我是如何基于这些来过滤结果的。?

我看了一眼:Google custom search API - sorting / filter

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

这种事情有可能吗?有没有人有任何更完整的例子链接?

我考虑过尝试内存过滤..但是如果Google只是发生在10个结果中丢弃1个Job页面,而[x] Show jobs only复选框被选中..那么用户只能在页面上获得1个结果。

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

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:6)

我已经设法解决了这个问题......只是通过大量的反复试验。

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

<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”的“创建者”,我会使用此查询字符串:

?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” OR “Category3”。

希望这个答案可以帮助人们免受撕裂的伤害......就像我差不多一样。