是否可以过滤solr Document中返回的字段?

时间:2013-03-25 10:13:14

标签: solr lucene

我的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>

我的问题是,是否可以过滤文档的返回字段以仅返回某些值,例如,仅返回距离另一个点50公里范围内的locationCoordinates并将其他点保留。

即。返回上面的文档,但只有第一个locationCoordinates

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

  
      
  1. 更改文档设计以在每个位置创建一个文档(Pro:works,Cons:需要在客户端检查重复项,堆   Solr数据库中的重复数据)
  2.   

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

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