如果你有一个服务,你的用户能够搜索不同的公司。用户输入一个简单的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. [置顶] vs2008 编译adb 支持4.2 android 系统(增加push 命令的进度)

    QQ: 2506314894 本想晚些时候放出来的,但是按捺不住啊,所以修改了之后就立即放出来了.先说明一下,这次用的adb 的源码比较新的,用的vs2008 编译出来,只有一个exe 文件,直接就可 ...

  2. MVC数组模型绑定

    ASP.NET MVC数组模型绑定   在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要进行数组模型绑定,会遇到索引断裂问题,如下示例: <input type=& ...

  3. 项目实践中--Git服务器的搭建与使用指南(转)

    一.前言 Git是一款免费.开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.在平时的项目开发中,我们会使用到Git来进行版本控制. Git的功能特性: 从一般开发者的角度来 ...

  4. HdU 4046 Panda 段树

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4046 意甲冠军:到了bw组成的长度为n的字符串(n<=50000).有m次操作(m<=1000 ...

  5. cisco san交换机配置

    1.配置交换机的管理地址switch(config)# interface mgmt 0 switch(config-if)# ip adress 192.168.100.108 255.255.25 ...

  6. Java提供的enum详解

    今天第一天看<<Effective Java>>,看了第六章的第一条就是全书的第30条--用enum代替int常量. 1.第一次知道原来enum也可以像class那样拥有成员函 ...

  7. Android 学习资源[转]

    因为一些大家都知道的原因,android很多官方出品的优秀开发资源在国内无法访问. 国内的同行们对此也做出了很多努力,有很多朋友通过各种手段把很多优秀的资源搬运到了国内,为国内android开发者提供 ...

  8. linux--档案权限与目录配置

    下面是最近学习档案权限与目录配置的一些知识点总结***博客园-邦邦酱好*** Linux最优秀的地方之一,就在于他的多人多任务环境.而为了让各个使用者具有较保密的档案数据,因此档案的权限管理就变的很重 ...

  9. C语言中结构体參数变量的传递

    [文章摘要] 在C语言中,结构体參数变量常常作为函数的參数来进行传递.但假设參数设置不当.会出现内存问题. 本文以实际的程序代码为例.具体地介绍怎样正确地使用结构体參数变量.为相关的开发工作提供了參考 ...

  10. LeetCode: Best Time to Buy and Sell Stock III [123]

    [称号] Say you have an array for which the ith element is the price of a given stock on day i. Design ...