⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fieldsortedhitqueue.java

📁 lucene-2.4.0 是一个全文收索的工具包
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   * @return  Comparator for sorting hits.   * @throws IOException If an error occurs reading the index.   */  static ScoreDocComparator comparatorShort(final IndexReader reader, final String fieldname)  throws IOException {    final String field = fieldname.intern();    final short[] fieldOrder = FieldCache.DEFAULT.getShorts(reader, field);    return new ScoreDocComparator() {      public final int compare (final ScoreDoc i, final ScoreDoc j) {        final int fi = fieldOrder[i.doc];        final int fj = fieldOrder[j.doc];        if (fi < fj) return -1;        if (fi > fj) return 1;        return 0;      }      public Comparable sortValue (final ScoreDoc i) {        return new Short(fieldOrder[i.doc]);      }      public int sortType() {        return SortField.SHORT;      }    };  }  /**   * Returns a comparator for sorting hits according to a field containing integers.   * @param reader  Index to use.   * @param fieldname  Fieldable containg integer values.   * @return  Comparator for sorting hits.   * @throws IOException If an error occurs reading the index.   */  static ScoreDocComparator comparatorInt (final IndexReader reader, final String fieldname)  throws IOException {    final String field = fieldname.intern();    final int[] fieldOrder = FieldCache.DEFAULT.getInts (reader, field);    return new ScoreDocComparator() {      public final int compare (final ScoreDoc i, final ScoreDoc j) {        final int fi = fieldOrder[i.doc];        final int fj = fieldOrder[j.doc];        if (fi < fj) return -1;        if (fi > fj) return 1;        return 0;      }      public Comparable sortValue (final ScoreDoc i) {        return new Integer (fieldOrder[i.doc]);      }      public int sortType() {        return SortField.INT;      }    };  }  /**   * Returns a comparator for sorting hits according to a field containing integers.   * @param reader  Index to use.   * @param fieldname  Fieldable containg integer values.   * @return  Comparator for sorting hits.   * @throws IOException If an error occurs reading the index.   */  static ScoreDocComparator comparatorLong (final IndexReader reader, final String fieldname)  throws IOException {    final String field = fieldname.intern();    final long[] fieldOrder = ExtendedFieldCache.EXT_DEFAULT.getLongs (reader, field);    return new ScoreDocComparator() {      public final int compare (final ScoreDoc i, final ScoreDoc j) {        final long li = fieldOrder[i.doc];        final long lj = fieldOrder[j.doc];        if (li < lj) return -1;        if (li > lj) return 1;        return 0;      }      public Comparable sortValue (final ScoreDoc i) {        return new Long(fieldOrder[i.doc]);      }      public int sortType() {        return SortField.LONG;      }    };  }  /**   * Returns a comparator for sorting hits according to a field containing floats.   * @param reader  Index to use.   * @param fieldname  Fieldable containg float values.   * @return  Comparator for sorting hits.   * @throws IOException If an error occurs reading the index.   */  static ScoreDocComparator comparatorFloat (final IndexReader reader, final String fieldname)  throws IOException {    final String field = fieldname.intern();    final float[] fieldOrder = FieldCache.DEFAULT.getFloats (reader, field);    return new ScoreDocComparator () {      public final int compare (final ScoreDoc i, final ScoreDoc j) {        final float fi = fieldOrder[i.doc];        final float fj = fieldOrder[j.doc];        if (fi < fj) return -1;        if (fi > fj) return 1;        return 0;      }      public Comparable sortValue (final ScoreDoc i) {        return new Float (fieldOrder[i.doc]);      }      public int sortType() {        return SortField.FLOAT;      }    };  }  /**   * Returns a comparator for sorting hits according to a field containing doubles.   * @param reader  Index to use.   * @param fieldname  Fieldable containg float values.   * @return  Comparator for sorting hits.   * @throws IOException If an error occurs reading the index.   */  static ScoreDocComparator comparatorDouble(final IndexReader reader, final String fieldname)  throws IOException {    final String field = fieldname.intern();    final double[] fieldOrder = ExtendedFieldCache.EXT_DEFAULT.getDoubles (reader, field);    return new ScoreDocComparator () {      public final int compare (final ScoreDoc i, final ScoreDoc j) {        final double di = fieldOrder[i.doc];        final double dj = fieldOrder[j.doc];        if (di < dj) return -1;        if (di > dj) return 1;        return 0;      }      public Comparable sortValue (final ScoreDoc i) {        return new Double (fieldOrder[i.doc]);      }      public int sortType() {        return SortField.DOUBLE;      }    };  }  /**   * Returns a comparator for sorting hits according to a field containing strings.   * @param reader  Index to use.   * @param fieldname  Fieldable containg string values.   * @return  Comparator for sorting hits.   * @throws IOException If an error occurs reading the index.   */  static ScoreDocComparator comparatorString (final IndexReader reader, final String fieldname)  throws IOException {    final String field = fieldname.intern();    final FieldCache.StringIndex index = FieldCache.DEFAULT.getStringIndex (reader, field);    return new ScoreDocComparator () {      public final int compare (final ScoreDoc i, final ScoreDoc j) {        final int fi = index.order[i.doc];        final int fj = index.order[j.doc];        if (fi < fj) return -1;        if (fi > fj) return 1;        return 0;      }      public Comparable sortValue (final ScoreDoc i) {        return index.lookup[index.order[i.doc]];      }      public int sortType() {        return SortField.STRING;      }    };  }  /**   * Returns a comparator for sorting hits according to a field containing strings.   * @param reader  Index to use.   * @param fieldname  Fieldable containg string values.   * @return  Comparator for sorting hits.   * @throws IOException If an error occurs reading the index.   */  static ScoreDocComparator comparatorStringLocale (final IndexReader reader, final String fieldname, final Locale locale)  throws IOException {    final Collator collator = Collator.getInstance (locale);    final String field = fieldname.intern();    final String[] index = FieldCache.DEFAULT.getStrings (reader, field);    return new ScoreDocComparator() {    	public final int compare(final ScoreDoc i, final ScoreDoc j) {			String is = index[i.doc];			String js = index[j.doc];			if (is == js) {				return 0;			} else if (is == null) {				return -1;			} else if (js == null) {				return 1;			} else {				return collator.compare(is, js);			}		}      public Comparable sortValue (final ScoreDoc i) {        return index[i.doc];      }      public int sortType() {        return SortField.STRING;      }    };  }  /**   * Returns a comparator for sorting hits according to values in the given field.   * The terms in the field are looked at to determine whether they contain integers,   * floats or strings.  Once the type is determined, one of the other static methods   * in this class is called to get the comparator.   * @param reader  Index to use.   * @param fieldname  Fieldable containg values.   * @return  Comparator for sorting hits.   * @throws IOException If an error occurs reading the index.   */  static ScoreDocComparator comparatorAuto (final IndexReader reader, final String fieldname)  throws IOException {    final String field = fieldname.intern();    Object lookupArray = ExtendedFieldCache.EXT_DEFAULT.getAuto (reader, field);    if (lookupArray instanceof FieldCache.StringIndex) {      return comparatorString (reader, field);    } else if (lookupArray instanceof int[]) {      return comparatorInt (reader, field);    } else if (lookupArray instanceof long[]) {      return comparatorLong (reader, field);    } else if (lookupArray instanceof float[]) {      return comparatorFloat (reader, field);    } else if (lookupArray instanceof String[]) {      return comparatorString (reader, field);    } else {      throw new RuntimeException ("unknown data type in field '"+field+"'");    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -