目录
conf Directory包含实例的配置文件。 至少,此目录必须包含一个schema.xml和solrconfig.xml文件。
还有一些其他配置文件值得一提。
>
>要使用Solarium将文档添加到Solr,首先需要使用Solr Server的配置来创建客户端实例。然后,您可以使用客户端的CreateUpdate函数创建更新查询。您可以使用AddDocument函数将文档添加到此查询中,该函数将文档实例作为其参数。文档实例应具有要添加到文档的所有字段和值。一旦将所有文档添加到查询中,您就可以使用客户端的执行函数执行它。
>如何使用Solarium?
>在将Solarium与SOLR使用Solrium时如何处理错误?可以通过捕获客户的执行函数抛出的Solarium_Exception来处理。此例外将包含有关错误的信息,例如错误消息和SOLR响应。
首先需要使用客户端的CreateSelect函数创建选择查询。然后,您可以使用AddFacetset函数将facet设置添加到查询中。您可以在各个方面添加各种各样的刻面,例如野外面,查询面和范围。设置了方面后,您可以使用客户端的执行函数执行查询,该函数将返回包含facet结果的结果集。
如何使用Solarium和Solr? 🎜>要与Solarium和Solr一起使用分页,首先需要使用客户端的CreateSelect函数创建选择查询。然后,您可以在查询上设置“开始”参数和行参数,以指定要返回的结果范围。启动参数指定要返回的第一个结果的索引,而行参数指定要返回的结果数。分页设置后,您可以使用客户端的执行函数执行查询,该功能将返回包含指定结果范围的结果集。
首页 后端开发 php教程 将Solarium与Solr一起搜索 - 高级

将Solarium与Solr一起搜索 - 高级

Feb 21, 2025 am 10:20 AM

将Solarium与Solr一起搜索 - 高级

这是有关使用Apache的Solr搜索实现以及Solarium(PHP库)将其集成到您的应用程序中的第四个也是最后一部分 在前三个部分中,我们安装并配置了Solr和Solarium,并开始构建搜索电影的示例应用程序。我们还研究了刻面搜索。

>我们将通过查看Solr的一些更高级功能以及如何与Solarium一起使用。

钥匙要点

通过标记文档中匹配的单词或短语,提供完整的和摘要的突出显示选项。

>使用Solr的建议组件将自动完整功能集成到您的搜索应用程序中,该功能分析了索引字段以进行模式匹配以动态建议查询术语。

>使用基于数组的配置来设置日光浴中的查询,允许详细自定义搜索参数和结果处理。
  • >通过添加其他内核来扩展Solr的功能,该功能涉及创建特定目录和配置文件以有效处理不同的数据集或搜索条件。
  • >
  • >使用其他配置文件(例如同义词)和potwords.txt进行自定义SOLR行为,以微调搜索引擎对查询语言的理解和处理,提高搜索相关性和准确性。
  • >
  • > Solr
  • 突出显示结果
  • >突出显示组件使您可以突出显示与搜索相匹配的文档部分。 它周围显示的行为取决于字段 - 如果是标题机会,它将以匹配的单词和更长的字段(例如概要或文章的主体)完整地显示出来,它将突出显示单词但是使用片段;就像Google的搜索结果一样。
  • >要设置突出显示,您首先需要指定要包含的字段。 然后,您可以为突出显示的单词或短语设置一个前缀和相应的后缀。 因此,例如,使突出显示的单词和短语粗体:
>

另外,要添加背景颜色:

,或者您甚至可以使用每场设置:

$hl = $query->getHighlighting();
$hl->setFields(array('title', 'synopsis'));
$hl->setSimplePrefix('<strong>');
$hl->setSimplePostfix('</strong>');
登录后复制
登录后复制
登录后复制
登录后复制

>在搜索实现中配置了突出显示组件后,在搜索结果视图中显示它还有更多的工作。

首先,您需要从ID中提取突出显示组件的突出显示文档:>
$hl = $query->getHighlighting();
$hl->setFields(array('title', 'synopsis'));
$hl->setSimplePrefix('<span style="background:yellow;">');
$hl->setSimplePostfix('</span>');
登录后复制
登录后复制
登录后复制
登录后复制

现在,您可以通过迭代通过它们来访问所有突出显示的字段,作为突出显示文档的属性:>

$hl = $query->getHighlighting();
$hl->getField('title')->setSimplePrefix('<strong>')->setSimplePostfix('</strong>');
$hl->getField('synopsis')->setSimplePrefix('<span style="background:yellow;">')->setSimplePostfix('</span>');
登录后复制
登录后复制
登录后复制
或,您可以使用getfield():

>

$hl = $query->getHighlighting();
$hl->setFields(array('title', 'synopsis'));
$hl->setSimplePrefix('<strong>');
$hl->setSimplePostfix('</strong>');
登录后复制
登录后复制
登录后复制
登录后复制

突出显示的字段不仅返回文本,但是,它们会返回文本“摘要”数组。 如果该特定字段没有匹配项 - 例如,如果您的搜索在标题上匹配而不是概述 - 那个数组将为空。

>

上面的代码将返回最多一个片段。 要更改此行为,您可以使用setSnippets()方法:>

例如,假设您搜索“星”一词。 结果之一的概述如下:
$hl = $query->getHighlighting();
$hl->setFields(array('title', 'synopsis'));
$hl->setSimplePrefix('<span style="background:yellow;">');
$hl->setSimplePostfix('</span>');
登录后复制
登录后复制
登录后复制
登录后复制
>

>不容错过的电影剧院活动将是电视历史上最令人难忘的时刻之一,以及关于两全其美的独家剪辑,以及《星际迷航:下一代》第3季。设定于24世纪,下一代是由Gene Roddenberry创建的,在原始《星际迷航》系列之后20年。下一代成为《星际迷航》系列最长的系列赛,由7个赛季中的178集组成。 《星际迷航:下一代》 - 两全其美的人是第一个看到两全其美的机会,这是有史以来最伟大的电视节目之一,作为全国精选电影剧院的光荣重新制作的全长功能。 >

突出显示的文档的摘要数组将包含三个项目:>

历史和独家剪辑,介绍了两全其美的世界和星际迷航:下一代

> 在原始《星际迷航》系列之后。下一代成为Star

的最长跑步系列 Trek特许经营,由178集在7个季节中组成。星际迷航:下一代 - 最好的
    >
  • 显示多个片段的一种方法是爆裂它们,例如:>
  • 这将导致以下结果:
历史和独家剪辑,介绍了两全其美的最佳和《星际迷航:下一代》……之后的《星际迷航》系列之后。下一代成为《明星》中最长的系列赛……跋涉特许经营,由7个赛季中的178集组成。星际迷航:下一代 - 最好的

>

$hl = $query->getHighlighting();
$hl->getField('title')->setSimplePrefix('<strong>')->setSimplePostfix('</strong>');
$hl->getField('synopsis')->setSimplePrefix('<span style="background:yellow;">')->setSimplePostfix('</span>');
登录后复制
登录后复制
登录后复制
>您可以使用许多其他参数来修改突出显示组件的行为。

>将突出显示到我们的电影搜索

>现在我们已经介绍了如何使用突出显示,将其集成到我们的电影搜索应用程序中应该很简单。

>

首先要做的就是通过在运行搜索之前添加以下内容来修改应用程序/controllers/homecontroller.php
然后,您会记住的搜索结果在App/views/home/index.blade.php中 -

$hl = $query->getHighlighting();
$hl->setFields(array('title', 'synopsis'));
$hl->setSimplePrefix('<strong>');
$hl->setSimplePostfix('</strong>');
登录后复制
登录后复制
登录后复制
登录后复制

请注意,每个搜索结果基本上如何混合并匹配搜索结果文档和突出显示的文档之间的字段 - 后者实际上是前者的一个子集。根据您的模式,您可能在突出显示的版本中提供所有字段。>

建议 - 添加自动完整

>

>建议组件用于根据不完整的查询输入建议查询术语。 从本质上讲,它检查了给定字段上的索引,并提取了与特定模式相匹配的搜索词。 然后,您可以按频率订购这些建议,以增加搜索的相关性。

>

要设置建议,我们需要在您的solrconfig.xml文件中进行配置。 打开它,将以下XML的以下片段放置在另一个声明附近的某个地方:

>

$hl = $query->getHighlighting();
$hl->setFields(array('title', 'synopsis'));
$hl->setSimplePrefix('<span style="background:yellow;">');
$hl->setSimplePostfix('</span>');
登录后复制
登录后复制
登录后复制
登录后复制
>您会注意到一些对“拼写检查”的引用,但这仅仅是因为建议组件在内部重复了大部分功能。

重要的一点是项目,该项目告诉组件我们要使用标题字段来基于我们的建议。

>

>重新启动solr,您现在可以尝试通过网络浏览器运行建议查询:

$hl = $query->getHighlighting();
$hl->getField('title')->setSimplePrefix('<strong>')->setSimplePostfix('</strong>');
$hl->getField('synopsis')->setSimplePrefix('<span style="background:yellow;">')->setSimplePostfix('</span>');
登录后复制
登录后复制
登录后复制
(根据您的设置方式,您可能需要更改端口号)

输出应该看起来有点像这样:

如您所见,Solr返回了“ HO”的四个可能的匹配,
$highlightedDoc = $highlighting->getResult($document->id);
登录后复制
*ho **使用,** ho **用途,** ho ** rror and ** ho ** me。 尽管 *home

>和恐怖在字母中 house> house,但 house> house>首先出现在我们的索引中最常见的搜索词之一。 。

>让我们使用此组件为我们的搜索框创建一个自动完成,这将在用户键入其查询时建议常见的搜索术语。

首先,定义路线:

if($highlightedDoc){
    foreach($highlightedDoc as $field => $highlight) {
        echo implode(' (...) ', $highlight) . '<br/>';
    }
}
登录后复制

在您的布局中包含jQuery UI(和jQuery本身):

if($highlightedDoc){
    $highlightedTitle = $highlightedDoc->getField('title');
}
登录后复制
包括一个jQuery UI主题:

$hl = $query->getHighlighting();
$hl->setSnippets(5);
// . . . as before . . .
登录后复制
>最后,添加一些JS来初始化自动完整:>

这就是全部 - 通过运行一些搜索来尝试一下。
implode(' ... ', $highlightedDoc->getField('synopsis'))
登录后复制
> 基于数组的配置

>

如果您愿意,可以使用数组来设置查询 - 例如:>

添加其他内核

在启动时,Solr穿越指定的主目录寻找内核,当它找到一个称为core.propeties的文件时,它标识了核心。 到目前为止,我们已经使用了一个名为Collection1的核心,您会发现它包含三个关键项目:>

core.propertes文件。 从最基本的角度来看,它只包含实例的名称。
// Get highlighting component, and apply settings
$hl = $query->getHighlighting();
$hl->setSnippets(5);
$hl->setFields(array('title', 'synopsis'));

$hl->setSimplePrefix('<span style="background:yellow;">');
$hl->setSimplePostfix('</span>');

// Execute the query and return the result
$resultset = $this->client->select($query);
登录后复制
>

conf Directory包含实例的配置文件。 至少,此目录必须包含一个schema.xml和solrconfig.xml文件。

>

数据目录保存索引。 该目录的位置可以被覆盖,如果不存在,它将为您创建。

so,创建一个新实例遵循以下步骤:

    >在您的主目录中创建一个新目录 - 示例应用程序中的电影
  1. >
  2. 创建一个conf Directory
  3. >在conf目录中创建或复制schema.xml文件和solrconfig.xml文件,并相应地自定义
  4. >
  5. >创建一个称为core.properties的文本文件,其中包括以下内容:
> name = instanceName

…instanceName是您的新目录的名称。

>

>请注意,示例中发货目录中的schema.xml配置包含对许多文本文件的引用 - 例如stopwords.txt,protwords.txt等 - 您可能还需要复制。

>

然后重新启动solr。

>您还可以通过Web浏览器中的管理Web界面添加新核心 - 单击左侧的Core Admin,然后添加Core。

其他配置

还有一些其他配置文件值得一提。

>

propwords.txt文件 - 或更具体地说,诸如lang/stopwords_en.txt之类的语言特定文件 - 包含搜索索引器应忽略的单词,例如“ a”,“ the”和“ at” 。 在大多数情况下,您可能不需要修改此文件。

>根据您的应用程序,您可能会发现您需要在protwords.txt中添加单词。 该文件包含一个没有“茎”的受保护单词的列表,也就是说,将其简化为基本形式;例如,“问”变成“问”,“工作”变为“工作”。 有时,试图“纠正”单词,也许会删除其认为最后是错误的数字字母。 您可能正在与地理区域打交道,并发现“缅因州”被驱动到“缅因州”。

>您可以在同义词中指定同义词 - 具有相同含义的单词。 每条逗号单独的同义词。 例如:

>您也可以使用Synoyms.txt来帮助使用同义词映射来纠正常见的拼写错误,例如:

$hl = $query->getHighlighting();
$hl->setFields(array('title', 'synopsis'));
$hl->setSimplePrefix('<strong>');
$hl->setSimplePostfix('</strong>');
登录后复制
登录后复制
登录后复制
登录后复制

如果您使用的是货币字段,则可能希望更新并关注Currency.xml(指定了一些示例汇率) - 当然哪个是高度波动的。>

摘要
$hl = $query->getHighlighting();
$hl->setFields(array('title', 'synopsis'));
$hl->setSimplePrefix('<span style="background:yellow;">');
$hl->setSimplePostfix('</span>');
登录后复制
登录后复制
登录后复制
登录后复制
在本系列中,我们研究了Apache的Solr实施搜索,并使用PHP Solarium库与它进行交互。我们已经安装和配置了Solr以及一个示例模式,并构建了一个旨在搜索一组电影的应用程序,该应用程序展示了Solr的许多功能。我们研究了刻面搜索,突出显示结果和分裂组件。希望这将为您提供足够的基础,以使其适应其在您的应用程序中使用Solr进行搜索。

要进一步阅读,您可能希望将Solr参考指南作为PDF下载,或咨询Solarium文档。

>常见问题(常见问题解答)关于将Solarium与Solr一起进行高级搜索

>如何与Solr和Solarium和Solarium?

>实现与SOLR和SOLARIUM实现自动完成的启用,涉及在Solr配置文件中创建建议者。该建议将用于提供用户查询的建议。设置建议后,您可以使用Solarium的建议查询来获取建议。 Suggester查询将根据用户的输入返回建议列表,然后您可以向用户显示。

>

> Solarium和Stellarium之间有什么区别?不同的软件。 Solarium是一个PHP库,提供了用于与功能强大的搜索平台Solr交互的API。另一方面,Stellarium是您计算机的免费开源天文馆。它在3D中显示出逼真的天空,就像您在肉眼,双筒望远镜或望远镜的情况下看到的一样。

>

>我如何使用Solarium查询Solr? ,您首先需要使用Solr Server的配置创建客户端实例。然后,您可以使用客户端的CreateSelect函数创建选择查询。您可以在查询上设置各种参数,例如要返回的字段,查询字符串和任何过滤器。设置查询后,您可以使用客户端的执行函数执行该查询,该功能将返回一个可以迭代的结果集以访问单个文档。

>如何使用Solarium添加文档?

>要使用Solarium将文档添加到Solr,首先需要使用Solr Server的配置来创建客户端实例。然后,您可以使用客户端的CreateUpdate函数创建更新查询。您可以使用AddDocument函数将文档添加到此查询中,该函数将文档实例作为其参数。文档实例应具有要添加到文档的所有字段和值。一旦将所有文档添加到查询中,您就可以使用客户端的执行函数执行它。

>

>如何使用Solarium从Solr删除文档?首先需要使用SOLR服务器的配置创建客户端实例。然后,您可以使用客户端的CreateUpdate函数创建更新查询。您可以使用AddDeleteById或AddDeleteByQuery函数将删除命令添加到此查询中。一旦将所有删除命令添加到查询中,您就可以使用客户端的执行函数执行它。

>

>如何使用Solarium?

来优化SOLR索引,以使用Solarium优化Solr索引,首先需要使用Solr Server的配置来创建客户端实例。然后,您可以使用客户端的CreateUpdate函数创建更新查询。您可以使用AddOptimize函数将优化命令添加到此查询中。一旦将优化命令添加到查询中,您就可以使用客户端的执行函数执行它。

>

>在将Solarium与SOLR使用Solrium时如何处理错误?可以通过捕获客户的执行函数抛出的Solarium_Exception来处理。此例外将包含有关错误的信息,例如错误消息和SOLR响应。

>如何使用Solarium和Solr?

>

首先需要使用客户端的CreateSelect函数创建选择查询。然后,您可以使用AddFacetset函数将facet设置添加到查询中。您可以在各个方面添加各种各样的刻面,例如野外面,查询面和范围。设置了方面后,您可以使用客户端的执行函数执行查询,该函数将返回包含facet结果的结果集。

如何使用Solarium和Solr使用突出显示? 🎜>要使用Solarium和Solr突出显示,首先需要使用客户端的CreateSelect函数创建选择查询。然后,您可以使用AddHighlighting功能将荧光笔添加到查询中。您可以在荧光笔上设置各种参数,例如要突出显示的字段和要返回的片段数量。设置荧光笔后,您可以使用客户端的执行函数执行查询,该函数将返回一个包括突出显示结果的结果集。

如何使用Solarium和Solr? 🎜>要与Solarium和Solr一起使用分页,首先需要使用客户端的CreateSelect函数创建选择查询。然后,您可以在查询上设置“开始”参数和行参数,以指定要返回的结果范围。启动参数指定要返回的第一个结果的索引,而行参数指定要返回的结果数。分页设置后,您可以使用客户端的执行函数执行查询,该功能将返回包含指定结果范围的结果集。

以上是将Solarium与Solr一起搜索 - 高级的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24
说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? 说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型? PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型? Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

PHP的持久相关性:它还活着吗? PHP的持久相关性:它还活着吗? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

您如何防止PHP中的SQL注入? (准备的陈述,PDO) 您如何防止PHP中的SQL注入? (准备的陈述,PDO) Apr 15, 2025 am 12:15 AM

在PHP中使用预处理语句和PDO可以有效防范SQL注入攻击。1)使用PDO连接数据库并设置错误模式。2)通过prepare方法创建预处理语句,使用占位符和execute方法传递数据。3)处理查询结果并确保代码的安全性和性能。

See all articles