如果你有一个服务,你的用户能够搜索不同的公司。用户输入一个简单的keyword,能够返回匹配keyword的公司,可是有一天,用户要求返回的公司列表中能够显示公司跟用户的距离,这是该怎么做呢?

1.如果我们在 schema.xml 中定义了例如以下索引结构:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="name" type="text" indexed="true" stored="true"/>
<field name="loc" type="location" indexed="true" stored="true"/>
<dynamicField name="*_coordinate" type="double" indexed="true" stored="false"/>

2.我们须要定义 location 字段类型,例如以下所看到的:

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>

3.再如果我们有下面索引数据

<add>
<doc>
<field name="id">1</field>
<field name="name">Company 1</field>
<field name="loc">56.4,40.2</field>
</doc>
<doc>
<field name="id">2</field>
<field name="name">Company 2</field>
<field name="loc">50.1,48.9</field>
</doc> <doc>
<field name="id">3</field>
<field name="name">Company 3</field>
<field name="loc">23.18,39.1</field>
</doc>
</add>

PS:loc是“纬度,经度”,别写反了。

4.如今能够通过下面语句查询到名称中匹配 company  的公司

1
q=name:company&fl=*

5.如果我们已经获得了client位置是 50.0, 28.0,然后我们打算在公司结果列表中显示client跟这些公司的距离。

这时我们须要将下面參数载入 fl 中:

1
dist:geodist(loc,50.0,28.0)

这样整个查询看起来像这样:

1
q=name:company&fl=*,dist:geodist(loc,50.0,28.0)

查询返回的内容例如以下所看到的:

<?xmlversion="1.0"encoding="UTF-8"?>
<response>
<lstname="responseHeader">
<intname="status">0</int>
<intname="QTime">0</int>
<lstname="params">
<strname="q">name:company</str>
<strname="fl">*,dist:geodist(loc,50.0,28.0)</str>
</lst>
</lst>
<resultname="response"numFound="3"start="0">
<doc>
<strname="id">1</str>
<strname="name">Company 1</str>
<strname="loc">56.4,40.2</str>
<doublename="dist">1077.4200268973314</double>
</doc>
<doc>
<strname="id">2</str>
<strname="name">Company 2</str>
<strname="loc">50.1,48.9</str>
<doublename="dist">1487.4260767512278</double>
</doc>
<doc>
<strname="id">3</str>
<strname="name">Company 3</str>
<strname="loc">23.18,39.1</str>
<doublename="dist">3134.746384852772</double>
</doc>
</result>
</response>

上述结果 dist 是客户希望从外地。

版权声明:本文博主原创文章,博客,未经同意不得转载。

Solr在结果返回函数值的更多相关文章

  1. solr统计只返回10或者100个数据的解决办法

    因为我所在的公司为政府做的项目[风险管理系统],其中涉及大量的统计展示,多数以整个市的区划,行业部门等方式返回,在昨天,我发现听过填报单位的方式返回时,始终只有100个数据.通过对比发现,在前辈的代码 ...

  2. 【solr】之solr界面查询返回距离并排序

    使用solr界面查询 {!geofilt}距离函数 star:[4 TO 5]星级排序 geodist() desc 距离排序 pt :31.221717,121.580891 sfield:loca ...

  3. shell使用标准输出返回函数值

  4. Solr复杂查询一:函数查询

    一.简介 Solr的函数可以动态计算每个文档的值,而不是返回在索引阶段对应字段的静态数值集.函数查询是一类特殊的查询,它可以像关键词一样添加到查询中,对所有文档进行匹配并返回它们的函数计算值作为文档得 ...

  5. 程序代码中退出函数exit()与返回函数return ()的区别

    程序代码中退出函数exit()与返回函数return ()的区别   exit(0):正常运行程序并退出程序:   exit(1):非正常运行导致退出程序:   return():返回函数,若在主函数 ...

  6. solr 6.1 服务端 tomcat 搭建及调用

    一.下载 apache solr6.1.0 最新版本zip,解压缩生成一个solr6.1.0文件夹 二.安装 1.在d:/projects下新建一个solr 2.把solr6.1.0/server/s ...

  7. Solr官方文档翻译-About & Getting Started

    关于(About) 官方文档介绍了所有的Apache Solr实现的重要特性和功能.它是免费的,可以到http://lucene.apache.org/solr/下载. 为了更加的深入和广泛,设计成一 ...

  8. Solr定时更新

    今天用到solr定时重建索引和增量更新技术,就从网上搜了一些资料,在这里给大家整理了一下,也经过了自己的测试,没有异常. Solr官方提供了很强大的Data Import Request Handle ...

  9. 【solr基础教程之九】client

    一.Java Script 1.因为Solr本身能够返回Json格式的结果,而JavaScript对于处理Json数据具有天然的优势,因此使用JavaScript实现Solrclient是一个非常好的 ...

随机推荐

  1. SVN最有效的方法打基线

    笔者:张克强    在微博上:张克强-敏捷307 2014/7/6 方法一来自于我的一条微博: 组织级scm建一个名为controlled的文件夹,当项目某文档通过评审后,组织级scm从项目文件夹下找 ...

  2. SecureCRT 连接虚拟机Linux

    SecureCRT 连接虚拟机Linux   最近在学习linux,在学习中遇到了一些问题,现总结一下. 虚拟机我用的是VirtualBox,完美支持中文,可以在电脑中创建虚拟机环境,上手非常简单.具 ...

  3. 部署、收回和删除解决方式----STSADM和PowerShell

    部署.收回和删除解决方式----STSADM和PowerShell         由于近期总是要部署wsp解决方式,所以常常要用到命令行或者PowerShell.所以有必要将命令集中放在这里.在部署 ...

  4. 在Windows下使用Hexo+GithubPage搭建博客的过程

    1.安装Node.js 下载地址:传送门 去 node.js 官网下载相应版本,进行安装即可. 可以通过node -v的命令来测试NodeJS是否安装成功 2.安装Git 下载地址:传送门 去 Git ...

  5. PPTP和L2TP的区别

    PPTP是点到点的隧道协议,服务器端使用TCP 的1723端口,同时使用GRE协议,加密上使用MPPE.位于NAT后的客户端连接会有问题. L2TP是二层隧道VPN,使用IPsec 进行加密,服务器端 ...

  6. 完美攻略心得之圣魔大战3(Castle Fantisia)艾伦希亚战记(艾伦西亚战记)包含重做版(即新艾伦希亚战记)

    (城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战不是个系列,艾伦西亚战记==艾伦希亚战记,一个游戏日文名:タイトル キャッスルファンタジア -エレンシア戦記-リニュー ...

  7. Conversion to Dalvik format failed: Unable to execute dex

    最近莫名奇妙遇到“Conversion to Dalvik format failed: Unable to execute dex”错误,stackoverflow以后得到结果 把项目中classp ...

  8. JAVA 计算地球上任意两点(经纬度)距离

    /** * 计算地球上任意两点(经纬度)距离 * * @param long1 * 第一点经度 * @param lat1 * 第一点纬度 * @param long2 * 第二点经度 * @para ...

  9. JVM指令集(指令码、助记符、功能描述)(转)

    JVM指令集(指令码.助记符.功能描述) 指令码 助记符 功能描述 0x00 nop 无操作 0x01 aconst_null 指令格式:  aconst_null 功能描述:  null进栈. 指令 ...

  10. Extjs4.0.7 实现Grid的嵌套

    网上相关资料非常少,我看过的大多是Extjs 3.0 急以前版本的解决方案. 比如:http://mikhailstadnik.com/ext/examples/nested-grid.htm  (E ...