截断
如果您想截断(限制)您的搜索结果描述,您可以通过多种方式来实现,但我将专注于最有效、最直接和最简单的方法,假设受众是那些有 PHP 障碍的人。(像我这样的)
首先,复制您的 search-result.tpl.php 文件并将其放在您的模板文件夹中。如果您已经有一个,那么只需相应地调整您拥有的代码。
其次,使用您喜欢的任何编辑器打开您的文件。我使用 Dreamweaver。您的代码应如下所示:
<?php if ($snippet) : ?>
<p class="search-snippet"><?php print $snippet ?></p>
<?php endif; ?>
<?php if ($info) : ?>
<p class="search-info"><?php print $info; ?></p>
<?php endif; ?>
您应该担心的是修改这段代码:
<?php print $snippet ?>
对于这个演示,我们希望将描述长度截断为 100 个字符,并让 PHP 处理在 100 个字符限制内查找前一个或最后一个整个单词。
只需将您的代码更改为:
<?php print substr($snippet, 0, 100); ?>
这就是说:显示字符串 $snippet 共 100 个字符,并从第一个字符 (0) 开始计算字符数。澄清一下,如果我希望它从不同的字符开始计数,我只需将 0 替换为起始字符,这将导致您的描述的一大块。
就是这样。
如果您希望真正让您的描述更加精彩,那么只需按照以下指南进行操作:
描述变量中的内容将是:123456789
I want to display: 12
substr($snippet, 0, 2);
I want to display: 56789
substr($snippet, 4);
I want to display: 89
substr($snippet, -2);
I want to display: 456
substr($snippet, 3, -4);
加长
与上面相同,但您需要确保您的 nutch 和 Solr 实例实际上正在保存并发送您需要的描述量。
确保在 nutch 和 Solr 的 schema.xml 文件中都有这个。更多信息可以在这里找到:http ://wiki.apache.org/solr/SchemaXml<copyField source="body" dest="teaser" maxChars="800"/>
另外,请尝试确保您具有以下默认值:
<property>
<name>fetcher.store.content</name>
<value>true</value>
<description>If true, fetcher will store content.</description>
</property>
<property>
<name>http.content.limit</name>
<value>65536</value>
<description>The length limit for downloaded content, in bytes.
If this value is nonnegative (>=0), content longer than it will be truncated;
otherwise, no truncation at all.
</description>
您也可以将这些相同的想法用于您的标题。要延长或截断您的标题,您只需修改您的 nutch-site.xml 以包括:
<property>
<name>indexer.max.title.length</name>
<value>100</value>
<description>The maximum number of characters of a title that are indexed.
</description>
</property>
将其调整为您想要的任何值并截断 search-result.tpl.php 中的标题。使用上面相同的代码。
我还想截断标题以切断管道(|)之后的任何标题所以,我使用了这个:<?php $title; $parts = explode( '|', $title ); print $parts[0]; ?>
这会将结果截断到第一个管道 (|)。所以代替这个:
我的头衔太长了,我有问题 | 我也使用 | 管道 | 很多
我得到:
我的标题太长了,我有问题
评论
如果您遇到问题
如果您在突出显示和预告片长度方面遇到问题,您可以在这里很容易地解决这个问题:http: //drupal.org/node/970928
观众:
那些想要突出显示但又想要超过每个关键字 100 个字符限制的人。
来自 https://www.drupal.org/node/968308
添加 UI 以突出显示配置变量
你好,
现在我已经弄清楚如何调整通过 nutch 抓取并通过 Solr 存储的数据量以及如何调整该数据的呈现长度,最后一块仍然存在:
如何在使用突出显示功能时调整预告片长度。
例子:
我在网站上搜索“正义”并获得以下回报:
注意第一个结果我只得到 100 个字符左右?请注意我得到 200 的第二个结果?这是一个问题。发生这种情况是因为“正义”一词在第一个实例中仅出现一次,在第二个实例中出现两次,并且被 ApacheSolr 中的某些登录切断。
我怎么能确定?也许这就是全部?
很简单就能找出来!只需转到 8983 上的 Solr 管理实例。在基本查询中输入确切的关键字并获取结果,然后查看页面源。在那里,您将确切地看到 Solr 在其数据库中用于该查询的内容。对我来说,因为我修改了 nutch/Solr 以保留整个页面,所以我拥有整个页面。所以我知道 ApacheSolr 逻辑正在这样做。
到目前为止我做了什么?
我查看了所有代码,发现了一些有趣的地方。
apachesolr_search.module 第 1464-1477 行
search.module 第 1200-1245 行
我的结果是什么?
没有。我似乎无法调整 ApacheSolr 突出显示部分的长度。
我想要的是:
我想让所有结果的整个搜索片段的长度成为标准,比如说 300 个字符,并保持突出显示,减去它当前使用的字符限制逻辑。
听起来很难?哎呀,是的。这将完成我关于使用 SolrSearch 调整预告片长度的教程http://drupal.org/node/968308 。任何输入都是超级骗子。
评论
评论#1
最大化 信用归因: maxmmize评论基于此:
http://wiki.apache.org/solr/HighlightingParameters
我一直在调整我的坡度
我将其设置为高以查看结果。我清理了我的 nutch 和 Solr 并将它们重建为香草。结果仍然没有变化。
登录或注册以发表评论
评论#2
最大化 信用归因: maxmmize评论我关闭了 solrconfig.xml 中的突出显示(在我的 lib 和我的模块文件夹中)并重新运行所有内容,我仍然得到突出显示,所以这证明 Drupal 正在这样做。现在我只需要找出在哪里以及如何。
顺便说一句,不应该关闭它来阻止我们的 mod 表单运行突出显示吗?
登录或注册以发表评论
评论#3
最大化 信用归因: maxmmize评论发现问题:
由于某种原因,solrconfig.xml 没有覆盖 apachesolr_search.module。(权限?)我将 hl.fragsize 的参数中的 NULL 替换为 400 和 wham,完成了。可能的错误?
登录或注册以发表评论
评论#4
最大化 信用归因: maxmmize评论登录或注册以发表评论
评论#5
杰布劳尔 信用署名: jbrauer评论如果变量为空,它们似乎被忽略。例如在 settings.php 设置中:
'apachesolr_hl_pretag' => NULL,
'apachesolr_hl_posttag' => NULL,
仍然提供用标签突出显示的单词。但是将“--”之类的东西作为值会导致它呈现--用于 pre 或 post 标记。只要不是 NULL 或 '',任何值似乎都可以工作。
登录或注册以发表评论
评论#6
杰普麦金尼 信贷署名: jpmckinney评论我们需要一个补丁才能使问题成为“需要审查”。
您可以在 settings.php(或使用 strongarm)中设置这些变量。我们可能应该在 UI 中公开它们。
首先在 HEAD 中添加功能。
登录或注册以发表评论
评论#7
pwolanin 信用归属: pwolanin评论我认为我们不应该为此向基本模块添加 UI。
OP似乎正在讨论其他一些问题-
登录或注册以发表评论
来自 https://www.drupal.org/node/970928
感谢这些 Drupal 贡献者