问题:需要使用Search API以编程方式运行我自己的搜索。我发现的每个google结果都适合教给非开发人员如何将模块与Views一起使用,而没有按照我的意愿进行操作的结果。
信息:
- 使用本地数据库服务代替Solr或任何其他服务。
- 数据未存储在数据库中,将与其他结果一起显示。
- 内容将在“类型”选项卡中分组。
- 由于各种原因而不使用视图。
- 已启用Facets API,但也不知道如何使用它。
原因:因为我想让搜索页面位于/ site-search,并且在页面参数后没有/ node / keyword。还将要求自定义此功能,使其超出可能提供相同类型功能的其他模块的范围。而且我想学习如何执行此操作,但是还没有找到有关如何完成此操作的任何教程或其他见解。
剩下的:我已经创建了搜索页面,并在其上执行以下搜索:
$term = $_SESSION['my-search']['term'];
$server = search_api_server_load('database');
$index = search_api_index_load('default_node_index');
$query = new SearchApiQuery($index);
$query->keys($term);
$query->fields(array('title','body:value'));
$srv= new SearchApiDbService($server);
$result = $srv->search($query);
在提交搜索表单时设置会话变量,然后将用户重定向到/ site-search以执行搜索并显示结果。
如果我输出$ result,我会看到它是一个包含不同信息的数组,其中包括一个结果集,该结果集是节点ID及其分数的数组。
我可以遍历这些内容,抓取节点并自己显示结果,但我认为必须有其他方法来呈现搜索结果。我还没有找到,那就是问题所在。
我一直在搜索Search API和Facet API中的不同类,但在它们中找不到任何看起来像它们可以建立结果输出的东西。
任何帮助,将不胜感激。
结果示例:
Array
(
[result count] => 11
[results] => Array
(
[37] => Array
(
[id] => 37
[score] => 15.7503318786621
)
[39] => Array
(
[id] => 39
[score] => 7
)
[40] => Array
(
[id] => 40
[score] => 5
)
[31] => Array
(
[id] => 31
[score] => 4
)
[33] => Array
(
[id] => 33
[score] => 1
)
[36] => Array
(
[id] => 36
[score] => 1
)
[1] => Array
(
[id] => 1
[score] => 1
)
[15] => Array
(
[id] => 15
[score] => 1
)
[16] => Array
(
[id] => 16
[score] => 1
)
[27] => Array
(
[id] => 27
[score] => 1
)
[35] => Array
(
[id] => 35
[score] => 0.980873763561249
)
)
[warnings] => Array
(
)
[ignored] => Array
(
)
[performance] => Array
(
[complete] => 0.0033111572265625
[preprocessing] => 0.00053095817565918
[execution] => 0.0027379989624023
[postprocessing] => 4.2200088500977E-5
)
)
您可以为上下文提供结果数组的转储吗?您也许可以将其直接传递给theme_search_results
—
克莱夫(Clive)
“我可以遍历这些内容,自己抓取节点并显示结果,但我认为必须有其他方法来呈现搜索结果。尽管如此,我仍然没有找到它,这就是问题所在。” - node_view_multiple() ?
—
Garrett Albright 2014年
克莱夫:我已经用搜索结果的输出更新了我的问题。Garrett:感谢您指出该功能,但不知道它的存在。对于其他一些项目,它会很方便,但与我想在这里进行的工作无关。:)应该在Search API类中突出显示关键字并显示相关的搜索文本,但是我一直无法弄清楚如何使用这些方法来呈现结果。感谢你目前的帮助!:)
—
杰森·格雷
您是否尝试过查看Drupal API上的搜索功能?api.drupal.org/api/drupal/modules!search!search.module/7
—
Agi Hammerthief 2014年
您是否在我在问题中描述的情况下使用过它们?
—
2014年