1

我需要为我的 Drupal 6 站点创建一些高级的搜索功能。我在两种内容类型之间有一对多的关系,需要搜索它们,尊重这种关系。

为了让事情更清楚......

我有内容类型 TypeX 和 TypeY。TypeY 有一个节点引用 CCK 字段,将它与 TypeX 的单个节点相关联。所以,TypeY 的很多节点都引用了 TypeX 的同一个节点。

我想使用 Views 2 为这些节点创建搜索页面。我希望每个搜索结果都是 TypeX 的一个节点,以及引用它的所有 TypeY 节点。我知道我可以只对单个结果进行主题化并使用视图将 TypeY 的节点添加到 TypeX 的单个节点......但这不会允许用户实际搜索 TypeY......它只会搜索 TypeX 并仅显示TypeY 的一些节点以及它。

无论如何要让搜索来解释两种内容类型的节点中的内容,但是将 TypeY 结果合并到 TypeX 的“父”节点中?

在数据库方面,似乎我需要进行连接,然后按搜索词过滤。但我无法弄清楚如何在 Views 中执行此操作。

感谢我能得到的任何帮助!!!

'**** 编辑 '****

为了确保这一点很清楚,这是我正在尝试做的一个视觉示例......

_____________________________________________________________________________________
|Type X Node                           |Type Y Node                                  |
|                                      |                                             |
| Content in node of TypeX that gets   |Has a node reference that points to the node |
| searched by the view...              |of TypeX. This content gets searched too!    |
|                                      |_____________________________________________|
|                                      |Type Y Node                                  |
|                                      |                                             |
|                                      |Another TypeY node with a node reference to  |
|                                      |to the TypeX node. This gets searched too!   |
--------------------------------------------------------------------------------------

这将是来自搜索视图的单个结果。视图中的“搜索:术语”过滤器将考虑所有三个节点中的内容。所以如果我搜索“这也被搜索了!”,我会得到上面的结果。或者,如果我搜索“TypeX 节点中的内容”,我会得到与上面相同的搜索结果。

我知道我可以搜索 TypeX 并使用另一个视图在结果显示中加载 TypeY 节点,但它不会搜索 TypeY 节点中的内容。

有什么想法……除了推出我自己的搜索功能(我目前不想做的事情)吗?

4

2 回答 2

1

哇,只是哇。我终于找到了解决这个问题的优雅方法。我不敢相信原来这么简单!!!

我不会将解决方案归功于我......我偶然发现了一篇很棒的博客文章,它完全回答了这个问题(甚至不再寻找了!)。这篇文章是由一个叫戴维的人写的,他是我的新英雄

文章在这里:http ://www.drupalcoder.com/story/667-improving-search-results-when-working-with-node-references-in-drupal

他还写了一篇后续文章,进一步简化了流程!!http://www.drupalcoder.com/story/696-a-better-alternative-for-improving-search-results-when-working-with-node-references-in-dru

事实证明,编写 CCK 的好人已经考虑过索引引用节点的内容。在编辑内容类型的显示字段部分,单击搜索选项!它使您可以确定在索引父节点时应如何​​索引引用的节点......并且您可以将其设置为完整节点。这将索引引用节点的全部内容作为索引父节点的一部分。剩下要做的唯一一件事(Davy 解释说)是确保每当引用节点的内容发生更改时,父节点都会重新索引。

于 2010-04-17T23:37:56.013 回答
0

如果您可以让您的视图达到搜索两种内容类型的程度,我认为这实际上确实成为了一个主题问题。您可以覆盖视图的各种主题模板并以特定方式组织返回的节点数组。您也可以在输出期间简单地从列表中省略内容类型 Y,并主题化内容类型 X 节点以列出 CCK 节点引用字段中的节点(这将类似于您提到的内容,但您仍将内容类型 Y 保留在视图查询并在输出期间省略它)。根据每个内容类型 X 节点的内容类型 Y 节点的数量,可能会有一些性能影响。

我认为无论你最终做什么,这将是一个主题问题,尽管是一个复杂的问题。

于 2010-04-16T18:33:34.360 回答