Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何限制drupal搜索索引所有内容类型?_Php_Search_Drupal - Fatal编程技术网

Php 如何限制drupal搜索索引所有内容类型?

Php 如何限制drupal搜索索引所有内容类型?,php,search,drupal,Php,Search,Drupal,我只希望对某些节点进行索引。搜索配置模块声称具有此功能,但它不起作用。那么,我如何编辑节点模块以只索引某些节点,或者更好的是,实现一个可以为我这样做的模块?这是,但看起来它至少已经被推到Drupal 8:/ 您可以在上面链接的功能请求讨论中找到一些解决方案建议,但搜索配置模块使用的“标准”方法是。它不会阻止节点被索引,但会操纵搜索查询以忽略某些条目,例如节点类型,这样它们就不会显示在搜索结果页面上 由于目前没有明显更好的解决方案afaik,我同意ceejayoz的意见,即在开始自定义编码您自己的

我只希望对某些节点进行索引。搜索配置模块声称具有此功能,但它不起作用。那么,我如何编辑节点模块以只索引某些节点,或者更好的是,实现一个可以为我这样做的模块?

这是,但看起来它至少已经被推到Drupal 8:/

您可以在上面链接的功能请求讨论中找到一些解决方案建议,但搜索配置模块使用的“标准”方法是。它不会阻止节点被索引,但会操纵搜索查询以忽略某些条目,例如节点类型,这样它们就不会显示在搜索结果页面上

由于目前没有明显更好的解决方案afaik,我同意ceejayoz的意见,即在开始自定义编码您自己的解决方案之前,您应该首先检查搜索配置模块不适合您的原因


如果您必须求助于编辑节点模块本身,将是开始的地方。

以下是确定需要索引哪些内容的查询:


用节点类型列表替换受限制的类型,并对要从搜索中限制的每个实体执行类似的查询。

Define不起作用。您联系过搜索配置维护人员以获得支持吗?我的意思是,这不起作用,它会阻止他们出现在搜索结果中,但不会停止对这些节点的索引。这正是我所需要的。您可能还需要清理搜索索引表,它可能会变得非常庞大,例如:从搜索索引中删除,其中sid在SELECT nid中,从node where node.type中键入受限类型还有一件事,如果您有一个非常大的数据库,您可能需要手动清理search_total表:从search_total中删除word不在其中从search_索引中选择不同的word。否则,search.module在尝试在单个查询中加载所有缺少的项时内存不足。
SELECT n.nid FROM {node} n 
  LEFT JOIN {search_dataset} d ON d.type = 'node' AND d.sid = n.nid 
  WHERE d.sid IS NULL OR d.reindex <> 0
  ORDER BY d.reindex ASC, n.nid ASC
INSERT INTO {search_dataset} 
  (sid, type, data, reindex)
  SELECT nid, 'node', '', 0 FROM {node} WHERE node.type IN (RESTRICTED_TYPES)
  ON DUPLICATE KEY UPDATE reindex = 0, data = ''