0

当前特点:

  • 使用 solr 术语组件、参数 terms.prefix 自动完成。
  • 地理位置搜索的边界框。

尝试的事情:

  • 我试图将两个查询合并为一个。但是我从来没有得到按地理位置过滤的结果。相反,我从 terms.prefix 搜索中获取所有内容。
  • 我也尝试过使用 dismax、edismax + bbox 地理位置搜索。我知道 dismax 不起作用,因为它没有前缀参数。
  • 我日夜在谷歌上查看,试图弄清楚这一点。
  • 我不想在我的字段名称“名称”上加上词干,以便每个字母都被视为关键字。

非常感谢任何帮助。

4

1 回答 1

3

不幸的是,您不能在 termscomponent 中执行此操作,因为它根本不支持基于其他字段的过滤,而不是您发布 terms 组件的字段。

该问题的最简单解决方案是将标准请求处理程序(即<requestHandler name="standard" class="solr.SearchHandler>)与您的边界框过滤器一起使用:

fq={!bbox}&sfield=store&pt=45.15,-93.85&d=5

以及您要为其列出术语的字段上的一个方面(假设您的字段名称是“名称”):

facet=true&facet.field=names&f.names.facet.prefix=$yourprefix$

您最终会得到如下查询:

/select?q=*:*&fq={!bbox}&sfield=store&pt=45.15,-93.85&d=5&facet=true&facet.field=names&f.names.facet.prefix=$yourprefix$

给出如下结果:

<lst name="facet_counts">
  <lst name="facet_queries"/>
    <lst name="facet_fields">
      <lst name="name">
        <int name="maxtor">1</int>
        <int name="memory">1</int>
        <int name="mobile">1</int>
        <int name="mp500">1</int>
        <int name="mb">0</int>
        <int name="mini">0</int>
      </lst>
   </lst>
</lst>

(在方面部分)

于 2011-12-08T14:11:28.013 回答