private static float[] filterFloats(FloatSet floatSet, float[] source) { FloatList floatList = new FloatArrayList(); for (float value : source) { if (floatSet.contains(value)) { floatList.add(value); } } if (floatList.size() == source.length) { return source; } else { return floatList.toFloatArray(); } }
@Override public float[] toFloatArray() { return list.toFloatArray(); } @Override
@Override public Explanation explain(int doc) { int encoded = _dataCache.orderArray.get(doc); int count = 1; FloatList scoreList = new FloatArrayList(_dataCache.valArray.size()); ArrayList<Explanation> explList = new ArrayList<Explanation>(scoreList.size()); while (encoded != 0) { if ((encoded & 0x00000001) != 0x0) { int idx = count - 1; scoreList.add(_function.score(_dataCache.freqs[idx], _boostList[idx])); explList.add(_function.explain(_dataCache.freqs[idx], _boostList[idx])); } count++; encoded >>>= 1; } Explanation topLevel = _function.explain(scoreList.toFloatArray()); for (Explanation sub : explList) { topLevel.addDetail(sub); } return topLevel; }
@Override public Explanation explain(int doc) { String[] vals = _array.getTranslatedData(doc, _dataCache.valArray); FloatList scoreList = new FloatArrayList(_dataCache.valArray.size()); ArrayList<Explanation> explList = new ArrayList<Explanation>(scoreList.size()); for (String val : vals) { int idx = _dataCache.valArray.indexOf(val); if (idx >= 0) { scoreList.add(_function.score(_dataCache.freqs[idx], _boostList[idx])); explList.add(_function.explain(_dataCache.freqs[idx], _boostList[idx])); } } Explanation topLevel = _function.explain(scoreList.toFloatArray()); for (Explanation sub : explList) { topLevel.addDetail(sub); } return topLevel; }