awj-----Solr在结果中返回函数值

文章来源:http://blog.csdn.net/awj3584/article/details/27795119


假设你有一个服务,你的用户可以搜索不同的公司,用户输入一个简单的关键字,可以返回匹配关键字的公司,但是有一天,用户要求返回的公司列表中可以显示公司跟用户的距离,这是该怎么做呢?

1.假设我们在 schema.xml 中定义了如下索引结构:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>  
  2. <field name="name" type="text" indexed="true" stored="true"/>  
  3. <field name="loc" type="location" indexed="true" stored="true"/>  
  4. <dynamicField name="*_coordinate" type="double" indexed="true" stored="false"/>  

2.我们需要定义 location 字段类型,如下所示:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>  

3.再假设我们有以下索引数据

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <add>  
  2. <doc>  
  3. <field name="id">1</field>  
  4. <field name="name">Company 1</field>  
  5. <field name="loc">56.4,40.2</field>  
  6. </doc>  
  7. <doc>  
  8. <field name="id">2</field>  
  9. <field name="name">Company 2</field>  
  10. <field name="loc">50.1,48.9</field>  
  11. </doc>  
  12.    
  13. <doc>  
  14. <field name="id">3</field>  
  15. <field name="name">Company 3</field>  
  16. <field name="loc">23.18,39.1</field>  
  17. </doc>  
  18. </add>  

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

4.现在可以通过以下语句查询到名称中匹配 company  的公司

1
q=name:company&fl=*

5.假设我们已经获得了客户端位置是 50.0, 28.0,然后我们打算在公司结果列表中显示客户端跟这些公司的距离。这时我们需要将以下参数加载 fl 中:

1
dist:geodist(loc,50.0,28.0)

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

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

查询返回的内容如下所示:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xmlversionxmlversion="1.0"encoding="UTF-8"?>  
  2. <response>  
  3. <lstnamelstname="responseHeader">  
  4. <intnameintname="status">0</int>  
  5. <intnameintname="QTime">0</int>  
  6. <lstnamelstname="params">  
  7. <strnamestrname="q">name:company</str>  
  8. <strnamestrname="fl">*,dist:geodist(loc,50.0,28.0)</str>  
  9. </lst>  
  10. </lst>  
  11. <resultnameresultname="response"numFound="3"start="0">  
  12. <doc>  
  13. <strnamestrname="id">1</str>  
  14. <strnamestrname="name">Company 1</str>  
  15. <strnamestrname="loc">56.4,40.2</str>  
  16. <doublenamedoublename="dist">1077.4200268973314</double>  
  17. </doc>  
  18. <doc>  
  19. <strnamestrname="id">2</str>  
  20. <strnamestrname="name">Company 2</str>  
  21. <strnamestrname="loc">50.1,48.9</str>  
  22. <doublenamedoublename="dist">1487.4260767512278</double>  
  23. </doc>  
  24. <doc>  
  25. <strnamestrname="id">3</str>  
  26. <strnamestrname="name">Company 3</str>  
  27. <strnamestrname="loc">23.18,39.1</str>  
  28. <doublenamedoublename="dist">3134.746384852772</double>  
  29. </doc>  
  30. </result>  
  31. </response>  
上面结果中 dist 就是客户要的距离字段。


Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价】:可用在相关项目设计,皆可应用在项目、毕业设计、课程设计、期末/期/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值