SOLR-266: Adding show=schema to LukeRequestHandler

git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@549570 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Ryan McKinley 2007-06-21 17:53:24 +00:00
parent bd5f3ae723
commit 02cadd8bb0
2 changed files with 51 additions and 0 deletions

View File

@ -71,6 +71,10 @@ New Features
This field type should only be used for sorting or as a value source
in a FunctionQuery (ryan, hossman, yonik)
10. SOLR-266: Adding show=schema to LukeRequestHandler to show the parsed
schema fields and field types. (ryan)
Changes in runtime behavior
Optimizations

View File

@ -20,6 +20,7 @@ package org.apache.solr.handler.admin;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
@ -128,6 +129,9 @@ public class LukeRequestHandler extends RequestHandlerBase
docinfo.add( "solr", doc );
rsp.add( "doc", docinfo );
}
else if ( "schema".equals( params.get( "show" ) ) ) {
rsp.add( "schema", getSchemaInfo( req.getSchema() ) );
}
else {
// If no doc is given, show all fields and top terms
Set<String> fields = null;
@ -335,6 +339,48 @@ public class LukeRequestHandler extends RequestHandlerBase
return finfo;
}
/**
* Return info from the index
*/
private static SimpleOrderedMap<Object> getSchemaInfo( IndexSchema schema )
{
Map<String, List<String>> typeusemap = new HashMap<String, List<String>>();
SimpleOrderedMap<Object> fields = new SimpleOrderedMap<Object>();
for( SchemaField f : schema.getFields().values() ) {
FieldType ft = f.getType();
SimpleOrderedMap<Object> field = new SimpleOrderedMap<Object>();
field.add( "type", ft.getTypeName() );
field.add( "flags", getFieldFlags(f) );
if( f.isRequired() ) {
field.add( "required", f.isRequired() );
}
if( f.getDefaultValue() != null ) {
field.add( "default", f.getDefaultValue() );
}
fields.add( f.getName(), field );
List<String> v = typeusemap.get( ft.getTypeName() );
if( v == null ) {
v = new ArrayList<String>();
}
v.add( f.getName() );
typeusemap.put( ft.getTypeName(), v );
}
SimpleOrderedMap<Object> types = new SimpleOrderedMap<Object>();
for( FieldType ft : schema.getFieldTypes().values() ) {
SimpleOrderedMap<Object> field = new SimpleOrderedMap<Object>();
field.add( "fields", typeusemap.get( ft.getTypeName() ) );
field.add( "tokenized", ft.isTokenized() );
field.add( "analyzer", ft.getAnalyzer()+"" );
types.add( ft.getTypeName(), field );
}
SimpleOrderedMap<Object> finfo = new SimpleOrderedMap<Object>();
finfo.add("fields", fields);
finfo.add("types", types);
return finfo;
}
private static SimpleOrderedMap<Object> getIndexInfo( IndexReader reader, boolean countTerms ) throws IOException
{
@ -534,3 +580,4 @@ public class LukeRequestHandler extends RequestHandlerBase