zoukankan      html  css  js  c++  java
  • Solr在结果返回函数值

    如果你有一个服务,你的用户能够搜索不同的公司。用户输入一个简单的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 是客户希望从外地。

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

  • 相关阅读:
    转物理老师的说说,过好自己的生活,别人的梦幻生活背后也有你看不见的无奈
    第一、二、三、BC范式的学习总结
    一位毕业四年的前辈的经历
    普里姆算法,克鲁斯卡尔算法,迪杰斯特拉算法,弗洛里德算法
    从零开始构建JavaScript框架4——DOM遍历2
    从零开始构建JavaScript框架3——DOM遍历1
    从零开始构建JavaScript框架2——总体结构以及元素的获取和创建
    从零开始构建JavaScript框架1——为何JavaScript开发需要框架
    从浏览器输入URL到页面加载完成到底发生了什么?
    第5课 C语言指针深入1
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4855610.html
Copyright © 2011-2022 走看看