关于solr的faceting 有很多中处理方案;
比较常用有
faceting text
faceting date
faceting query
模拟一个简单的需求:
企业索引库中
- 字段comCate 公司类型
- 字段comSize 公司规模
- 字段date 入库时间
- 字段info 公司基本信息
- 字段comName 公司名称
业务:输入关键字 (在公司名称字段 + 公司基本信息)中检索、显示出相应的查询结果
并列出 结果中各种类型的公司个数 各种规模的公司个数
近一年来的入库公司个数 近两年来入库公司的个数 近5年来入库的个数
以上的业务处理完全可以使用faceting来实现;
关于solr搜索结果统计的具体实现【小例子】
【http://localhost:8044/solr/job/select/?q=*%3a*&version=2.2&start=0&rows=10&indent=on&facet=on&facet.field=comCate&f.comCate.facet.missing=on&f.comCate.facet.method=enum】
上面的url为solr的搜索查询命令
相应片段
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">3</int>
−
<lst name="params">
[color=red]<str name="facet">on</str>[/color]
<str name="indent">on</str>
<str name="start">0</str>
<str name="q">*:*</str>
[color=red]<str name="f.comCate.facet.method">enum</str>
<str name="facet.field">comCate</str>
<str name="f.comCate.facet.missing">on</str>[/color]
<str name="rows">10</str>
<str name="version">2.2</str>
</lst>
</lst>
<str name="facet">on</str>
打开facet(统计)
<str name="facet.field">comCate</str>
统计字段为 comCate
<str name="f.comCate.facet.missing">on</str>
貌似不处理空内容
<str name="f.comCate.facet.method">enum</str>
统计方法枚举类型统计
相应片段
<lst name="facet_counts">
<lst name="facet_queries"/>
−
<lst name="facet_fields">
−
<lst name="comCate">
<int name="民营公司">1721</int>
<int name="外资(欧美)">367</int>
<int name="外资(非欧美)">333</int>
<int name="合资(非欧美)">169</int>
<int name="合资(欧美)">141</int>
<int name="国企">130</int>
<int name="外企代表处">15</int>
<int>575</int>
</lst>
</lst>
<lst name="facet_dates"/>
</lst>
该应用为检索企业库 统计各个企业类型下有多少企业 类似sql中的 group by
\ count(*)
《solr1.4 enterprise search server》书中 第五章 141页 明细介绍!
---------------------
如果你使用php客户端来处理这个应用的话 在多统计的时候可能会出一些小罗乱:
$solr = new Apache_Solr_service('localhost', '8044', '/solr/ent');
$condition['q.op'] = 'OR';
$condition['sort']='date desc';
$condition['facet'] = 'true';
$condition['facet.mincount'] = '1';
[color=red]$condition['facet.field'] = 'comCate';
$condition['facet.field'] = 'comSize';[/color]
$condition['f.conCate.facet.missing'] = 'true';
$condition['f.conCate.facet.method'] = 'enum';
$condition['f.comSize.facet.missing'] = 'true';
$condition['f.comSize.facet.method'] = 'enum';
$q_str = "*:*";
r = $solr->search($q_str, $offset, 10, $condition);
上面的代码显然是数组的索引重复 、
【解决方案:】
[color=red]$condition['facet.field'] = 'comCate';
$condition['facet.field'] = 'comSize';[/color]
//修改成
[color=red]$condition['facet.field_1'] = 'comCate';
$condition['facet.field_2'] = 'comSize';[/color]
//继续修改 Apache/Solr/service.php文件 960行左右
// anywhere else the regex isn't expecting it
$queryString = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $queryString);
//在此添加下面代码即可
$queryString = preg_replace('/field_[0-9]{1}/', 'field', $queryString);
分享到:
相关推荐
在Solr中,分组统计(Grouping)是一种强大的功能,它允许用户基于某个字段对搜索结果进行分组,以便更好地理解和分析数据。分组统计可以提供每个分组内的文档数量,或者根据特定查询对每个分组进行进一步的过滤。 ...
在这个"solr入门java工程"中,我们将探讨如何使用Java客户端与华为FusionInsight SolrTest进行交互,以及如何在SolrCloud模式下进行分布式搜索。 首先,让我们了解Solr的基本概念。Solr的核心功能是提供高效的全文...
综上所述,全文检索客户端代码是实现高效、便捷搜索的关键,无论是Solr还是Elasticsearch,都可以通过其提供的Java客户端工具实现数据的增删改查。在实际应用中,应根据项目需求和团队技能选择合适的全文检索引擎,...
- **高级搜索特性**:支持 faceting(分类统计)、highlighting(高亮)、more like this(相似推荐)等 Solr 提供的高级搜索特性。 - **优化与提交**:对索引进行优化,确保数据的一致性,并控制何时将更改提交到 ...
Solr学习笔记(三)——Solr客户端开发实例 在本文中,我们将深入探讨Solr客户端的开发,以便更好地理解如何在实际项目中利用Solr的强大功能。Solr是一款开源的全文搜索引擎,提供了高效的搜索和索引功能。通过Solr...
4. 高级特性:探索Solr的近实时搜索(NRT)、复制、 faceting(分类)、highlighting(高亮显示)等功能。 这个压缩包提供的资源涵盖了Solr的基础知识、配置代码以及可能的教学指导,对于初学者或开发者来说,是一...
除了基本功能,Solr还可以实现如拼音搜索、同义词扩展、高亮显示搜索结果、相关性评分等高级特性,进一步提升用户体验。例如,通过添加拼音分析器,用户可以用汉字拼音进行搜索;利用Solr的自定义相似度函数,可以...
此外,Solr还支持faceting(分面搜索)、高亮显示、自定义函数查询等功能。 标签中的"源码"可能指的是实际的PHP代码示例,而"工具"可能指的是PHP Solr客户端这个工具。在实际项目中,PHP Solr客户端可以帮助开发者...
7. 高亮显示:Solr可以高亮显示搜索结果中的关键词,提高用户体验。 三、Solr 6.2.0的改进与新特性 1. 改进的ShardHandler API:增强了对请求的并发处理能力,提高了性能。 2. 引入了新的查询执行模型(Distributed...
solarium, PHP Solr客户端库 Solarium PHP客户端库什么是 Solarium?Solarium是一个PHP客户端库,可以精确地模型Solr概念。 它的他多个cics库只处理与Solr的通信,因这里a 也使用一个文档化的API处理所有复杂的roo...
### Solr 搜索引擎知识点详解 #### Solr概述 **Solr** 是一款开源的、高性能的全文检索服务器,能够支持大规模数据集的快速搜索需求。它基于 **Apache Lucene** 开发,提供了丰富的功能集,包括全文检索、文档排序...
PHP扩展Solr是PHP与Apache Solr搜索引擎之间的桥梁,它允许PHP应用程序无缝地与Solr服务器进行交互,执行搜索、索引操作等。在Linux环境下安装这个扩展,需要遵循一系列步骤,确保所有依赖项都已满足,并正确编译和...
结合《解密搜索引擎技术实战》第八章的代码,你可以逐步学习并实践上述知识点,理解Solr搜索引擎的实现原理,从而掌握构建高效搜索引擎的技术。记得在实际操作中不断调试和优化,以适应不同的业务场景和性能需求。
- ** faceting(分面搜索)**: 提供了对搜索结果进行分组和计数的功能,便于用户进行导航和筛选。 - **拼写纠正**:利用SpellChecker组件提供拼写建议。 - **高亮显示**:突出显示查询结果中的关键词。 - **近...
下面是一个简单的PHP Solr搜索示例: ```php require_once 'path/to/php_solr-0.4.1/autoload.php'; $client = new \SolrClient('http://localhost:8983/solr/your_core'); $query = new \SolrQuery(); $query->...
"require": {"laravel/framework": "4.1.*","davispeixoto/laravel-4-solr": "dev-master"}接下来,从终端更新Composer: composer update此操作完成后,仍在终端运行: php artisan config:publish davispeixoto/...
SolrClient是专门为PHP开发的一款Solr客户端库,它允许开发者通过Composer进行安装和管理,以便于在PHP项目中方便地与Apache Solr搜索引擎进行交互。Apache Solr是一款开源的企业级搜索平台,常用于构建高性能的全文...
他的主要特性包括:高效,灵活的缓存功能,垂直搜索功能,高亮下试搜索结果,通过索引复制来提高可用性,提供一套强大的data schema 来定义字段,类型和设置文本分析,提供基于web的管理界面等。
Solr如何进行索引和搜索 ...搜索:客户端(可以是浏览器可以是java程序)发送get请求到solr服务器,请求solr服务器给它响应一个结果文档(xml、json),程序员拿到这些文档就可以对其进行解析。进行视图渲染。