2

如何在 Solr 的 POJO 中存储地图?目前我有这样的构造

@Field("*_locId")
protected Map<String, Integer> geoLocationToLocationId;

在 schema.xml 文件中:

<dynamicField name="*_locId" type="int" indexed="false" stored="true" multiValued="false" /> 

通过添加:

public void addGeoLocationToLocationAutoInMapping(GeoCoordinates geoCoordinates,
        Integer id) {
    if(this.geoLocationToLocationId == null) {
        this.geoLocationToLocationId = new HashMap<String, Integer>();
    }
    this.geoLocationToLocationId.put(geoCoordinates.toString() +
            "_locId", id);
}

得到是相似的。

这行得通,但是我在 Solr 中存储这样的 Java Map 有点脏,因为我可以获得大量字段。是否有另一种方法可以将 Java Maps 写入 Solr?

我不想索引它们,我只想保存数据。

4

1 回答 1

3

虽然我想总体上遵循@Geert-Jan 的建议,但有时您只想让 Solr 返回您需要的所有数据。在 Solr 中存储像您这样的简单映射(字符串到整数)的更好方法是将键和值存储为两个单独的多值字段,并确保索引一致。因此,您将拥有一个多值字段,例如:

地理位置:new york, los angeles, chicago

和另一个喜欢

位置标识:1, 2, 3

并确保字段中没有任何值为空location_id,否则字段中的索引将不匹配。

于 2013-03-27T00:52:45.963 回答