Ralph LeVan Research Scientist levan@oclc.org SRU and Lucene Ralph LeVan Research Scientist levan@oclc.org
SRU Overview A Simple Web Service Supports Search and Retrieve Supports REST-ful and SOAP requests Responses are always XML records Supports Search and Retrieve Uses a Standard Query Grammar Supports Self-Configuring Clients A Gateway to Local Databases
SRU Features Explain Records CQL Query Grammar Persistent Result Sets XML Database Records Returned Index Browses Stylesheets
Explain Records serverInfo databaseInfo metaInfo indexInfo schemaInfo configInfo
serverInfo Generated Automatically host port database
databaseInfo From SRWDatabase.props Provided Automatically databaseInfo.title databaseInfo.description databaseInfo.contact Provided Automatically implementation
metaInfo From SRWDatabase.props metaInfo.dateModified metaInfo.aggregatedFrom metaInfo.dateAggregated
indexInfo Generated Automatically From SRWDatabase.props “local” index set and Lucene index names From SRWDatabase.props qualifier.<indexSet>.<indexName> = <LuceneIndexName> Used only if you want to map other index names to your Lucene indexes (e.g. qualifier.dc.identifier=id)
schemaInfo Generated Automatically From SRWDatabase.props LuceneDocument From SRWDatabase.props xmlSchemas=<list of name> <schemaName>.identifier= <schemaName>.location= <schemaName>.namespace= <schemaName>.title= [<schemaName>.transformer=] [<schemaName>.resolver=]
schemaInfo Example xmlSchemas=LuceneDocument, DC LuceneDocument.identifier=info:srw/schema/1/LuceneDocument LuceneDocument.location=http://www.oclc.org/standards/Lucene/schema/LuceneDocument.xsd LuceneDocument.namespace=http://www.oclc.org/LuceneDocument LuceneDocument.title=Lucene Demo Database records in their internal format
schemaInfo Example (cont.) DC.identifier=info:srw/schema/1/dc-v1.1 DC.location=http://www.loc.gov/zing/srw/dc-schema.xsd DC.title=DC: Dublin Core Elements DC.transformer=LuceneToDC.xsl
configInfo Generated Automatically From SRWDatabase.props maximumRecords (20) numberOfRecords (10) resultSetTTL (300) From SRWDatabase.props configInfo.maximumRecords configInfo.numberOfRecords configInfo.resultSetTTL
CQL Query Grammar Builtin: BasicLuceneQueryTranslator CqlQueryTranslator Query makeQuery(CQLNode cn); Term getTerm(); From SRWDatabase.props SRWLuceneDatabase. CqlToLuceneQueryTranslator= <ClassName>
Persistent Result Sets Builtin: LuceneQueryResult
XML Database Records Builtin: BasicLuceneRecordResolver RecordResolver Void init(Properties props); Record resolve(Document doc, String IdFieldName, ExtraDataType extraDataType) From SRWDatabase.props <schemaName>.resolver=<ClassName> SRWLuceneDatabase.idFieldName= <FieldName>
Index Browses Builtin: SRWLuceneDatabase.getTerms()
Stylesheets From SRWDatabase.props explainStyleSheet= /SRW/explainResponse.xsl scanStyleSheet=/SRW/scanResponse.xsl searchStyleSheet= /SRW/searchRetrieveResponse.xsl
Making the Magic Happen Drop the SRWLucene.war into your <tomcat>/webapps directory Restart Tomcat Edit <tomcat>/webapps/SRWLucene/WEB-INF/classes/SRWServer.props
Sample SRWServer.props db.LuceneDemoDB.class= ORG.oclc.os.SRW.Lucene.SRWLuceneDatabase db.LuceneDemoDB.home= f:/lucene-2.0.0 db.LuceneDemoDB.configuration= SRWDatabase.props
Sample SRWDatabase.props databaseInfo.title=Lucene Demo Database databaseInfo.description=An index of the source code for Lucene databaseInfo.contact=Ralph LeVan (levan@oclc.org) qualifier.cql.serverChoice=contents explainStyleSheet=/SRWLucene/explainResponse.xsl scanStyleSheet=/SRWLucene/scanResponse.xsl searchStyleSheet= /SRWLucene/searchRetrieveResponse.xsl
Resources http://www.oclc.org/research/software/srw http://staff.oclc.org/~levan/SRWLuceneSource.jar http://staff.oclc.org/~levan/SRWLucene.war http://staff.oclc.org/~levan/Implementing%20an%20SRWLuceneDatabase.doc http://staff.oclc.org/~levan/SRU%20and%20Lucene.ppt http://alcme.oclc.org/srw/SRUServerTester.html