Java 类org.apache.lucene.search.SortField.Type 实例源码
项目:meresco-lucene
文件:JsonQueryConverter.java
Sort convertToSort(JsonArray sortKeys) {
if (sortKeys == null || sortKeys.size() == 0)
return null;
SortField[] sortFields = new SortField[sortKeys.size()];
for (int i = 0; i < sortKeys.size(); i++) {
JsonObject sortKey = sortKeys.getJsonObject(i);
String sortBy = sortKey.getString("sortBy");
boolean sortDescending = sortKey.getBoolean("sortDescending", false);
String core = sortKey.getString("core", null);
SortField field;
if (sortBy.equals(SORT_ON_SCORE))
field = new SortField(null, SortField.Type.SCORE, !sortDescending);
else {
Type type = typeForSortField(sortKey.getString("type"));
if (core == null || core.equals(coreName))
field = new SortField(sortBy, type, sortDescending);
else
field = new JoinSortField(sortBy, type, sortDescending, core);
Object missingValue = missingSortValue(sortKey, type);
if (missingValue != null)
field.setMissingValue(missingValue);
}
sortFields[i] = field;
}
return new Sort(sortFields);
}
项目:meresco-lucene
文件:JsonQueryConverter.java
private Object missingSortValue(JsonObject sortKey, Type type) {
JsonValue missingValue = sortKey.getOrDefault("missingValue", null);
if (missingValue == null)
return null;
if (missingValue instanceof JsonString) {
if (((JsonString) missingValue).getString().equals("STRING_FIRST"))
return SortField.STRING_FIRST;
else if (((JsonString) missingValue).getString().equals("STRING_LAST"))
return SortField.STRING_LAST;
} else {
switch (type) {
case INT:
return ((JsonNumber) missingValue).intValue();
case LONG:
return ((JsonNumber) missingValue).longValue();
case DOUBLE:
return ((JsonNumber) missingValue).doubleValue();
default:
break;
}
}
return null;
}
项目:taxonomy
文件:IAViewRepository.java
/**
* Finds the top n hits from whole Index where all results are after a
* previous result (after)
*
* @param after
* the last doc from previous search
* @param nDocs
* nb of elements to retrieve in total
* @return
*/
public BrowseAllDocsResponse browseAllDocs(ScoreDoc after, int nDocs) {
List<String> listOfDocReferences = new ArrayList<String>();
IndexSearcher searcher = null;
try {
searcher = iaviewSearcherManager.acquire();
TopDocs topDocs = searcher.searchAfter(after, new MatchAllDocsQuery(), nDocs, new Sort(new SortField(null,
Type.DOC)));
ScoreDoc scoreDoc = null;
for (int i = 0; i < topDocs.scoreDocs.length; i++) {
scoreDoc = topDocs.scoreDocs[i];
Document document = searcher.doc(scoreDoc.doc,
new HashSet<String>(Arrays.asList(InformationAssetViewFields.DOCREFERENCE.toString())));
String docReferenceFromLuceneDocument = LuceneTaxonomyMapper
.getDocReferenceFromLuceneDocument(document);
listOfDocReferences.add(docReferenceFromLuceneDocument);
}
return new BrowseAllDocsResponse(listOfDocReferences, scoreDoc);
} catch (IOException ioException) {
throw new TaxonomyException(TaxonomyErrorType.LUCENE_IO_EXCEPTION, ioException);
} finally {
LuceneHelperTools.releaseSearcherManagerQuietly(iaviewSearcherManager, searcher);
}
}
项目:incubator-blur
文件:DateFieldTypeDefinition.java
@Override
public SortField getSortField(boolean reverse) {
if (reverse) {
return new SortField(getFieldName(), Type.LONG, reverse);
}
return new SortField(getFieldName(), Type.LONG);
}
项目:incubator-blur
文件:StringFieldTypeDefinition.java
@Override
public SortField getSortField(boolean reverse) {
if (reverse) {
return new SortField(getFieldName(), Type.STRING, reverse);
}
return new SortField(getFieldName(), Type.STRING);
}
项目:incubator-blur
文件:LongFieldTypeDefinition.java
@Override
public SortField getSortField(boolean reverse) {
if (reverse) {
return new SortField(getFieldName(), Type.LONG, reverse);
}
return new SortField(getFieldName(), Type.LONG);
}
项目:incubator-blur
文件:DoubleFieldTypeDefinition.java
@Override
public SortField getSortField(boolean reverse) {
if (reverse) {
return new SortField(getFieldName(), Type.DOUBLE, reverse);
}
return new SortField(getFieldName(), Type.DOUBLE);
}
项目:incubator-blur
文件:AclReadFieldTypeDefinition.java
@Override
public SortField getSortField(boolean reverse) {
if (reverse) {
return new SortField(getFieldName(), Type.STRING, reverse);
}
return new SortField(getFieldName(), Type.STRING);
}
项目:incubator-blur
文件:IntFieldTypeDefinition.java
@Override
public SortField getSortField(boolean reverse) {
if (reverse) {
return new SortField(getFieldName(), Type.INT, reverse);
}
return new SortField(getFieldName(), Type.INT);
}
项目:incubator-blur
文件:AclDiscoverFieldTypeDefinition.java
@Override
public SortField getSortField(boolean reverse) {
if (reverse) {
return new SortField(getFieldName(), Type.STRING, reverse);
}
return new SortField(getFieldName(), Type.STRING);
}
项目:incubator-blur
文件:FloatFieldTypeDefinition.java
@Override
public SortField getSortField(boolean reverse) {
if (reverse) {
return new SortField(getFieldName(), Type.FLOAT, reverse);
}
return new SortField(getFieldName(), Type.FLOAT);
}
项目:incubator-blur
文件:TestingPagingCollector.java
@Test
public void testSimpleSearchPagingWithSorting() throws Exception {
IndexReader reader = getReaderFlatScore(length);
IndexSearcherCloseable searcher = getSearcher(reader);
TotalHitsRef totalHitsRef = new TotalHitsRef();
ProgressRef progressRef = new ProgressRef();
printHeapSize();
TermQuery query = new TermQuery(new Term("f1", "value"));
Sort sort = new Sort(new SortField("index", Type.INT, true));
IterablePaging paging = new IterablePaging(new AtomicBoolean(true), searcher, query, 100, null, null, false, sort,
new DeepPagingCache());
IterablePaging itPaging = paging.skipTo(90).gather(20).totalHits(totalHitsRef).progress(progressRef);
BlurIterator<ScoreDoc, BlurException> iterator = itPaging.iterator();
int position = 90;
int searches = 1;
while (iterator.hasNext()) {
ScoreDoc sd = iterator.next();
assertEquals(position, progressRef.currentHitPosition());
assertEquals(searches, progressRef.searchesPerformed());
System.out.println("time [" + progressRef.queryTime() + "] " + "total hits [" + totalHitsRef.totalHits() + "] "
+ "searches [" + progressRef.searchesPerformed() + "] " + "position [" + progressRef.currentHitPosition()
+ "] " + "doc id [" + sd.doc + "] " + "score [" + sd.score + "]");
position++;
if (position == 100) {
searches++;
}
}
printHeapSize();
}
项目:meresco-lucene
文件:JoinSortCollector.java
public FieldComparator<?> getComparator(String field, Type type, boolean reverse, final int numHits, final int sortPos, Object missingValue) {
switch(type) {
case STRING:
return new JoinTermOrdValComparator(numHits, field, missingValue == SortField.STRING_LAST, this);
case INT:
return new JoinIntComparator(numHits, field, (Integer) missingValue, this);
case DOUBLE:
return new JoinDoubleComparator(numHits, field, (Double) missingValue, this);
default:
throw new IllegalStateException("Illegal join sort type: " + type);
}
}
项目:meresco-lucene
文件:JsonQueryConverter.java
private SortField.Type typeForSortField(String type) {
switch (type) {
case "String":
return SortField.Type.STRING;
case "Int":
return SortField.Type.INT;
case "Double":
return SortField.Type.DOUBLE;
case "Long":
return SortField.Type.LONG;
}
return null;
}
项目:Maskana-Gestor-de-Conocimiento
文件:TestDrillSideways.java
@Test
public void testEmptyIndex() throws Exception {
// LUCENE-5045: make sure DrillSideways works with an empty index
Directory dir = newDirectory();
Directory taxoDir = newDirectory();
writer = new RandomIndexWriter(random(), dir);
taxoWriter = new DirectoryTaxonomyWriter(taxoDir, IndexWriterConfig.OpenMode.CREATE);
IndexSearcher searcher = newSearcher(writer.getReader());
writer.close();
TaxonomyReader taxoReader = new DirectoryTaxonomyReader(taxoWriter);
taxoWriter.close();
// Count "Author"
FacetSearchParams fsp = new FacetSearchParams(new CountFacetRequest(new CategoryPath("Author"), 10));
DrillSideways ds = new DrillSideways(searcher, taxoReader);
DrillDownQuery ddq = new DrillDownQuery(fsp.indexingParams, new MatchAllDocsQuery());
ddq.add(new CategoryPath("Author", "Lisa"));
DrillSidewaysResult r = ds.search(null, ddq, 10, fsp); // this used to fail on IllegalArgEx
assertEquals(0, r.hits.totalHits);
r = ds.search(ddq, null, null, 10, new Sort(new SortField("foo", Type.INT)), false, false, fsp); // this used to fail on IllegalArgEx
assertEquals(0, r.hits.totalHits);
IOUtils.close(searcher.getIndexReader(), taxoReader, dir, taxoDir);
}
项目:stratio-cassandra
文件:GeoShapeMapper.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.LONG, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperBlob.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.STRING, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperFloat.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.FLOAT, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperBigInteger.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.STRING, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperString.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.STRING, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperInteger.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.INT, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperInet.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.STRING, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperDate.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.LONG, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperText.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.STRING, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperBoolean.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.STRING, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperUUID.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.STRING, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperDouble.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.DOUBLE, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperLong.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.LONG, reverse);
}
项目:stratio-cassandra
文件:ColumnMapperBigDecimal.java
/** {@inheritDoc} */
@Override
public SortField sortField(String field, boolean reverse) {
return new SortField(field, Type.STRING, reverse);
}
项目:NYBC
文件:TestSort.java
public void testRandomFieldNameSorts() throws Exception {
SolrQueryRequest req = lrf.makeRequest("q", "*:*");
final int iters = atLeast(5000);
// infinite loop abort when trying to generate a non-blank sort "name"
final int nonBlankAttempts = 37;
for (int i = 0; i < iters; i++) {
final StringBuilder input = new StringBuilder();
final String[] names = new String[_TestUtil.nextInt(r,1,10)];
final boolean[] reverse = new boolean[names.length];
for (int j = 0; j < names.length; j++) {
names[j] = null;
for (int k = 0; k < nonBlankAttempts && null == names[j]; k++) {
names[j] = _TestUtil.randomRealisticUnicodeString(r, 1, 100);
// munge anything that might make this a function
names[j] = names[j].replaceFirst("\\{","\\{\\{");
names[j] = names[j].replaceFirst("\\(","\\(\\(");
names[j] = names[j].replaceFirst("(\\\"|\\')","$1$1z");
names[j] = names[j].replaceFirst("(\\d)","$1x");
// eliminate pesky problem chars
names[j] = names[j].replaceAll("\\p{Cntrl}|\\p{javaWhitespace}","");
if (0 == names[j].length()) {
names[j] = null;
}
}
// with luck this bad, never go to vegas
// alternatively: if (null == names[j]) names[j] = "never_go_to_vegas";
assertNotNull("Unable to generate a (non-blank) names["+j+"] after "
+ nonBlankAttempts + " attempts", names[j]);
reverse[j] = r.nextBoolean();
input.append(r.nextBoolean() ? " " : "");
input.append(names[j]);
input.append(" ");
input.append(reverse[j] ? "desc," : "asc,");
}
input.deleteCharAt(input.length()-1);
SortField[] sorts = null;
try {
sorts = QueryParsing.parseSort(input.toString(), req).getSort();
} catch (RuntimeException e) {
throw new RuntimeException("Failed to parse sort: " + input, e);
}
assertEquals("parsed sorts had unexpected size",
names.length, sorts.length);
for (int j = 0; j < names.length; j++) {
assertEquals("sorts["+j+"] had unexpected reverse: " + input,
reverse[j], sorts[j].getReverse());
final Type type = sorts[j].getType();
if (Type.SCORE.equals(type)) {
assertEquals("sorts["+j+"] is (unexpectedly) type score : " + input,
"score", names[j]);
} else if (Type.DOC.equals(type)) {
assertEquals("sorts["+j+"] is (unexpectedly) type doc : " + input,
"_docid_", names[j]);
} else if (Type.CUSTOM.equals(type) || Type.REWRITEABLE.equals(type)) {
fail("sorts["+j+"] resulted in a '" + type.toString()
+ "', either sort parsing code is broken, or func/query "
+ "semantics have gotten broader and munging in this test "
+ "needs improved: " + input);
} else {
assertEquals("sorts["+j+"] ("+type.toString()+
") had unexpected field in: " + input,
names[j], sorts[j].getField());
}
}
}
}
项目:gerrit-gitblit-plugin
文件:TicketIndexer.java
Lucene(Type fieldType) {
this.fieldType = fieldType;
}
项目:search-core
文件:TestSort.java
public void testRandomFieldNameSorts() throws Exception {
SolrQueryRequest req = lrf.makeRequest("q", "*:*");
final int iters = atLeast(5000);
// infinite loop abort when trying to generate a non-blank sort "name"
final int nonBlankAttempts = 37;
for (int i = 0; i < iters; i++) {
final StringBuilder input = new StringBuilder();
final String[] names = new String[_TestUtil.nextInt(r,1,10)];
final boolean[] reverse = new boolean[names.length];
for (int j = 0; j < names.length; j++) {
names[j] = null;
for (int k = 0; k < nonBlankAttempts && null == names[j]; k++) {
names[j] = _TestUtil.randomRealisticUnicodeString(r, 1, 100);
// munge anything that might make this a function
names[j] = names[j].replaceFirst("\\{","\\{\\{");
names[j] = names[j].replaceFirst("\\(","\\(\\(");
names[j] = names[j].replaceFirst("(\\\"|\\')","$1$1z");
names[j] = names[j].replaceFirst("(\\d)","$1x");
// eliminate pesky problem chars
names[j] = names[j].replaceAll("\\p{Cntrl}|\\p{javaWhitespace}","");
if (0 == names[j].length()) {
names[j] = null;
}
}
// with luck this bad, never go to vegas
// alternatively: if (null == names[j]) names[j] = "never_go_to_vegas";
assertNotNull("Unable to generate a (non-blank) names["+j+"] after "
+ nonBlankAttempts + " attempts", names[j]);
reverse[j] = r.nextBoolean();
input.append(r.nextBoolean() ? " " : "");
input.append(names[j]);
input.append(" ");
input.append(reverse[j] ? "desc," : "asc,");
}
input.deleteCharAt(input.length()-1);
SortField[] sorts = null;
try {
sorts = QueryParsing.parseSort(input.toString(), req).getSort();
} catch (RuntimeException e) {
throw new RuntimeException("Failed to parse sort: " + input, e);
}
assertEquals("parsed sorts had unexpected size",
names.length, sorts.length);
for (int j = 0; j < names.length; j++) {
assertEquals("sorts["+j+"] had unexpected reverse: " + input,
reverse[j], sorts[j].getReverse());
final Type type = sorts[j].getType();
if (Type.SCORE.equals(type)) {
assertEquals("sorts["+j+"] is (unexpectedly) type score : " + input,
"score", names[j]);
} else if (Type.DOC.equals(type)) {
assertEquals("sorts["+j+"] is (unexpectedly) type doc : " + input,
"_docid_", names[j]);
} else if (Type.CUSTOM.equals(type) || Type.REWRITEABLE.equals(type)) {
fail("sorts["+j+"] resulted in a '" + type.toString()
+ "', either sort parsing code is broken, or func/query "
+ "semantics have gotten broader and munging in this test "
+ "needs improved: " + input);
} else {
assertEquals("sorts["+j+"] ("+type.toString()+
") had unexpected field in: " + input,
names[j], sorts[j].getField());
}
}
}
}
项目:InComb
文件:NewsDao.java
/**
* Creates a new instance with all properties.
* @param id the id of the {@link ESortField}.
* @param name the name of the {@link Field} in the {@link News} {@link Document} to which
* will be sorted.
* @param type the {@link Type} of the field set in {@link #name()}.
* @param defaultOrder the default {@link ESortOrder} for this field.
*/
private ESortField(final int id, final String name, final Type type, final ESortOrder defaultOrder) {
this.id = id;
this.name = name;
this.type = type;
this.defaultOrder = defaultOrder;
}