0

我正在开发一个 RSS 提要,其中必须提供全文搜索 - 您从某个框搜索,并以 RSS 形式获得结果。我一直试图让 node_search 和 do_search 工作,但我错过了一些东西......但是什么?

据我所知,类似 $find = node_search('search', 'type:article'); 应该给我一个包含 type = 'article' 的所有匹配节点的结果。但是如何指定关键字/搜索词?

我错过了什么?

4

2 回答 2

0

OpenSearch 模块将搜索结果公开为 RSS,无需自己编写代码。

如果您想要一个专门的表单,您可以在处理完表单后重定向到 OpenSearch 结果。

附录:如果你真的想自己做,你可以search_data这样使用:

<?php
$data = search_data('your searchterms here');

这会搜索节点(作为 的默认第二个参数search_data),但也可用于搜索用户和其他已实现 hook_search 的事物。

此外,search_data实际上是返回格式化的搜索结果。如果你想得到原始搜索结果,你可以直接调用 hook_search,或者使用do_search. 例子:

<?php
$results = module_invoke('node', 'search', 'your searchterms here');
$data = do_search($query, 'node');

不同之处在于调用钩子会为您提供更多与节点相关的数据(因为它通过特定于节点的搜索代码运行,除了通用do_search(node.module 的hook_search实现调用 do_search 以完成实际工作))和可能更准确的搜索,因为节点搜索尊重您可能在搜索设置中设置的权重。权衡是较慢的搜索查询。

于 2009-06-08T09:12:35.483 回答
0

它应该是 key:value 你可以使用 - 和 "" 也。

钩子搜索

菲尔

于 2009-06-08T09:34:43.083 回答