0

我有如下所示的 solr 文档:

<doc>
    <str name="some_attribute">some_attribute_value</str>
    <!-- ... -->
    <arr name="locationCoordinates">
      <str>48.117,11.539</str>
      <str>23.423,11.342</str>
      <!-- ... -->
    </arr>
</doc>

我的问题是是否可以过滤文档的返回字段以仅返回某些值,例如仅返回locationCoordinates另一个点 50 公里范围内的值,而将其他值排除在外。

即返回上述文件,但只有第一个locationCoordinates

我真的不知道这在 Solr 中是否可行(因为面向文档的结构),但我至少可以问:)。

也许我还应该详细说明我想使用此功能的方式以及为此“找到”的替代方案:

  1. 更改文档设计以在每个位置创建一个文档(优点:有效,缺点:需要在客户端检查重复项,Solr 数据库中的大量重复数据)

  2. 保留这个结构(优点:工作,不必更改当前结构,缺点:我必须自己(在客户端)排序正确的坐标,因此遇到距离计算问题(我已经过滤了文档事先按距离,如果我在客户端计算的距离很差,可能会丢失一些数据)

  3. 在 Solr 端为位置(及其名称等)创建一个新的文档“类型”,并使用类似外键的结构将位置添加到文章中,以便计算我必须查询的距离首先到达可到达的位置,然后加入文章(优点:一切都在 solr 端有效,缺点:我需要 Solr-Joins)

4

1 回答 1

0
  1. 更改文档设计以在每个位置创建一个文档(优点:有效,缺点:需要在客户端检查重复项,Solr 数据库中的大量重复数据)

如果这是您唯一关心的问题,您可能可以考虑将 设置locationCoordinates为每个文档的unique_key 。

通过这样做,您不允许 locationCoordinates在您的索引中重复,从而消除了在客户端检查重复项的需要。

于 2013-03-25T10:58:14.760 回答