Skip to content

Commit d6a162d

Browse files
Merge pull request #34 from traveltime-dev/distance-docs
Distance docs
2 parents 519ec5c + 7f83219 commit d6a162d

File tree

3 files changed

+41
-14
lines changed

3 files changed

+41
-14
lines changed

7.12/src/main/java/com/traveltime/plugin/elasticsearch/query/TraveltimeScorer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import it.unimi.dsi.fastutil.longs.Long2IntMap;
44
import java.io.IOException;
5-
import lombok.Getter;
65
import lombok.RequiredArgsConstructor;
76
import org.apache.lucene.search.DocIdSetIterator;
87
import org.apache.lucene.search.Scorer;
@@ -17,7 +16,7 @@ public class TraveltimeScorer extends Scorer {
1716
private class TraveltimeFilteredDocs extends DocIdSetIterator {
1817
private final TraveltimeWeight.FilteredIterator backing;
1918

20-
@Getter private long currentValue = 0;
19+
private long currentValue = 0;
2120
private boolean currentValueDirty = true;
2221

2322
private void invalidateCurrentValue() {

7.12/src/main/java/com/traveltime/plugin/elasticsearch/query/TraveltimeWeight.java

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -121,18 +121,45 @@ public Scorer scorer(LeafReaderContext context) throws IOException {
121121

122122
val pointToTime = new Long2IntOpenHashMap(valueArray.size());
123123

124-
val results =
125-
protoFetcher.getTimes(
126-
ttQuery.getParams().getOrigin(),
127-
decodedArray,
128-
ttQuery.getParams().getLimit(),
129-
ttQuery.getParams().getMode(),
130-
ttQuery.getParams().getCountry(),
131-
ttQuery.getParams().getRequestType());
132-
133-
for (int index = 0; index < results.size(); index++) {
134-
if (results.get(index) >= 0) {
135-
pointToTime.put(valueArray.getLong(index), results.get(index).intValue());
124+
if (ttQuery.getParams().isIncludeDistance()) {
125+
val pointToDistance = new Long2IntOpenHashMap(valueArray.size());
126+
127+
val mode = Util.unsafeCastToDistanceTransportation(ttQuery.getParams().getMode());
128+
129+
val timeDistance =
130+
protoFetcher.getTimesAndDistances(
131+
ttQuery.getParams().getOrigin(),
132+
decodedArray,
133+
ttQuery.getParams().getLimit(),
134+
mode,
135+
ttQuery.getParams().getCountry(),
136+
ttQuery.getParams().getRequestType());
137+
138+
val times = timeDistance.getLeft();
139+
val distances = timeDistance.getRight();
140+
141+
for (int index = 0; index < times.size(); index++) {
142+
if (times.get(index) >= 0) {
143+
pointToTime.put(valueArray.getLong(index), times.get(index).intValue());
144+
pointToDistance.put(valueArray.getLong(index), distances.get(index).intValue());
145+
}
146+
}
147+
148+
TraveltimeCache.DISTANCE.add(ttQuery.getParams(), pointToDistance);
149+
} else {
150+
val results =
151+
protoFetcher.getTimes(
152+
ttQuery.getParams().getOrigin(),
153+
decodedArray,
154+
ttQuery.getParams().getLimit(),
155+
ttQuery.getParams().getMode(),
156+
ttQuery.getParams().getCountry(),
157+
ttQuery.getParams().getRequestType());
158+
159+
for (int index = 0; index < results.size(); index++) {
160+
if (results.get(index) >= 0) {
161+
pointToTime.put(valueArray.getLong(index), results.get(index).intValue());
162+
}
136163
}
137164
}
138165

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Can be set either in the query or as a default in the config.
4141
Defaults to `ONE_TO_MANY`.
4242
- `prefilter`: Arbitrary Elasticsearch query that will be used to limit which points are sent to the API.
4343
- `output`: **[since 7.10]** name of the field that will hold the travel times in the response
44+
- `distanceOutput` **[since 7.10]**: name of the field that will hold the travel distances in the response. Cannot be used with `mode` set to `pt`.
4445

4546
###Examples
4647

0 commit comments

Comments
 (0)