diff --git a/solr/exampleSolr/conf/schema.xml b/solr/exampleSolr/conf/schema.xml index ede99f821..586eb76aa 100644 --- a/solr/exampleSolr/conf/schema.xml +++ b/solr/exampleSolr/conf/schema.xml @@ -498,7 +498,7 @@ - + @@ -573,7 +573,7 @@ DocId - ALLTEXT + diff --git a/solr/exampleSolr/conf/solrconfig.xml b/solr/exampleSolr/conf/solrconfig.xml index b37a027ca..30aff6ca6 100644 --- a/solr/exampleSolr/conf/solrconfig.xml +++ b/solr/exampleSolr/conf/solrconfig.xml @@ -707,6 +707,8 @@ will be overridden by parameters in the request --> + dismax + nameRaw nameLowercase nameUnstemmed nameStemmed ALLTEXT ALLTEXTUNSTEMMED explicit 10 @@ -784,20 +786,22 @@ layout Solritas - edismax + + *:* 10 *,score + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 text,features,name,sku,id,manu,cat 3 - + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 - + on cat manu_exact diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/VitroTermNames.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/VitroTermNames.java index 74d719823..35613c02d 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/VitroTermNames.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/VitroTermNames.java @@ -54,4 +54,7 @@ public class VitroTermNames { /** rdfs:label lowercased, tokenized, stop words, stemmed **/ public static String NAME_STEMMED = "nameStemmed"; // was NAME + + /** field for beta values of all documents **/ + public static final String BETA = "BETA"; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/beans/ContextNodesInclusionFactory.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/beans/SearchQueryHandler.java similarity index 96% rename from webapp/src/edu/cornell/mannlib/vitro/webapp/search/beans/ContextNodesInclusionFactory.java rename to webapp/src/edu/cornell/mannlib/vitro/webapp/search/beans/SearchQueryHandler.java index 8738a65c0..8feb00413 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/beans/ContextNodesInclusionFactory.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/beans/SearchQueryHandler.java @@ -15,15 +15,17 @@ import com.hp.hpl.jena.query.QuerySolutionMap; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.Syntax; import com.hp.hpl.jena.rdf.model.Literal; +import com.hp.hpl.jena.rdf.model.Property; import com.hp.hpl.jena.rdf.model.RDFNode; import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.ResourceFactory; +import com.hp.hpl.jena.rdf.model.StmtIterator; import com.hp.hpl.jena.shared.Lock; import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary; import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext; -public class ContextNodesInclusionFactory { +public class SearchQueryHandler { private OntModel fullModel; private String contextNodeURI; @@ -32,9 +34,9 @@ public class ContextNodesInclusionFactory { // private static final String queryForEducationalTraining = "SELECT ?query WHERE {" + // "?searchConfig <"+ DisplayVocabulary.QUERY_FOR_EDUCATIONAL_TRAINING + "> ?query . }"; - private static Log log = LogFactory.getLog(ContextNodesInclusionFactory.class); + private static Log log = LogFactory.getLog(SearchQueryHandler.class); - public ContextNodesInclusionFactory(String contextNodeURI, + public SearchQueryHandler(String contextNodeURI, OntModel displayOntModel, ServletContext context) { this.fullModel = ModelContext.getJenaOntModel(context); this.contextNodeURI = contextNodeURI; @@ -643,6 +645,22 @@ public class ContextNodesInclusionFactory { } - - + private int getTotalIndividuals(){ + return fullModel.listIndividuals().toList().size(); + } + + public float calculateBeta(String uri){ + float beta=0; + RDFNode node = (Resource) fullModel.getResource(uri); + StmtIterator stmtItr = fullModel.listStatements((Resource)null, (Property)null,node); + int Conn = 0; + while(stmtItr.hasNext()){ + stmtItr.next(); + Conn++; + } + + beta = (float)Conn/getTotalIndividuals(); + beta += 1; + return beta; + } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/Entity2LuceneDoc.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/Entity2LuceneDoc.java index 1228ba45f..e13b823b3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/Entity2LuceneDoc.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/Entity2LuceneDoc.java @@ -23,7 +23,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement; import edu.cornell.mannlib.vitro.webapp.beans.VClass; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.search.IndexingException; -import edu.cornell.mannlib.vitro.webapp.search.beans.ContextNodesInclusionFactory; +import edu.cornell.mannlib.vitro.webapp.search.beans.SearchQueryHandler; import edu.cornell.mannlib.vitro.webapp.search.beans.IndividualProhibitedFromSearch; import edu.cornell.mannlib.vitro.webapp.search.beans.ProhibitedFromSearch; import edu.cornell.mannlib.vitro.webapp.search.docbuilder.Obj2DocIface; @@ -110,7 +110,7 @@ public class Entity2LuceneDoc implements Obj2DocIface{ private IndividualProhibitedFromSearch individualProhibited; - private ContextNodesInclusionFactory contextNodesInclusionFactory; + private SearchQueryHandler searchQueryHandler; private static HashMap IndividualURIToObjectProperties = new HashMap(); @@ -118,10 +118,10 @@ public class Entity2LuceneDoc implements Obj2DocIface{ public Entity2LuceneDoc( ProhibitedFromSearch classesProhibitedFromSearch, - IndividualProhibitedFromSearch individualProhibited, ContextNodesInclusionFactory contextNodesInclusionFactory){ + IndividualProhibitedFromSearch individualProhibited, SearchQueryHandler searchQueryHandler){ this.classesProhibitedFromSearch = classesProhibitedFromSearch; this.individualProhibited = individualProhibited; - this.contextNodesInclusionFactory = contextNodesInclusionFactory; + this.searchQueryHandler = searchQueryHandler; } public boolean canTranslate(Object obj) { @@ -242,12 +242,12 @@ public class Entity2LuceneDoc implements Obj2DocIface{ String contextNodePropertyValues; // if(ent.isVClass("http://xmlns.com/foaf/0.1/Person")){ - contextNodePropertyValues = contextNodesInclusionFactory.getPropertiesAssociatedWithEducationalTraining(ent.getURI()); - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithRole(ent.getURI()); - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithPosition(ent.getURI()); - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithRelationship(ent.getURI()); - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithAwardReceipt(ent.getURI()); - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithInformationResource(ent.getURI()); + contextNodePropertyValues = searchQueryHandler.getPropertiesAssociatedWithEducationalTraining(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithRole(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithPosition(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithRelationship(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithAwardReceipt(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithInformationResource(ent.getURI()); // } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/LuceneSetup.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/LuceneSetup.java index 6872596fa..08162714c 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/LuceneSetup.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/LuceneSetup.java @@ -42,7 +42,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.jena.SearchReindexingListener; import edu.cornell.mannlib.vitro.webapp.search.beans.IndividualProhibitedFromSearch; import edu.cornell.mannlib.vitro.webapp.search.beans.ObjectSourceIface; import edu.cornell.mannlib.vitro.webapp.search.beans.ProhibitedFromSearch; -import edu.cornell.mannlib.vitro.webapp.search.beans.ContextNodesInclusionFactory; +import edu.cornell.mannlib.vitro.webapp.search.beans.SearchQueryHandler; import edu.cornell.mannlib.vitro.webapp.search.indexing.IndexBuilder; import edu.cornell.mannlib.vitro.webapp.servlet.setup.AbortStartup; @@ -120,7 +120,7 @@ public class LuceneSetup implements javax.servlet.ServletContextListener { Entity2LuceneDoc translator = new Entity2LuceneDoc( new ProhibitedFromSearch(DisplayVocabulary.PRIMARY_LUCENE_INDEX_URI, displayOntModel), new IndividualProhibitedFromSearch(context), - new ContextNodesInclusionFactory(DisplayVocabulary.CONTEXT_NODES_URI, displayOntModel, context) + new SearchQueryHandler(DisplayVocabulary.CONTEXT_NODES_URI, displayOntModel, context) ); indexer.addObj2Doc(translator); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/LuceneSetupCJK.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/LuceneSetupCJK.java index 3323dabe5..83dc5076a 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/LuceneSetupCJK.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/lucene/LuceneSetupCJK.java @@ -27,7 +27,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.VitroFilterUtils; import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.VitroFilters; import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext; import edu.cornell.mannlib.vitro.webapp.dao.jena.SearchReindexingListener; -import edu.cornell.mannlib.vitro.webapp.search.beans.ContextNodesInclusionFactory; +import edu.cornell.mannlib.vitro.webapp.search.beans.SearchQueryHandler; import edu.cornell.mannlib.vitro.webapp.search.beans.IndividualProhibitedFromSearch; import edu.cornell.mannlib.vitro.webapp.search.beans.ProhibitedFromSearch; import edu.cornell.mannlib.vitro.webapp.search.indexing.IndexBuilder; @@ -94,7 +94,7 @@ public class LuceneSetupCJK implements javax.servlet.ServletContextListener { Entity2LuceneDoc translator = new Entity2LuceneDoc( new ProhibitedFromSearch(DisplayVocabulary.PRIMARY_LUCENE_INDEX_URI, displayOntModel), new IndividualProhibitedFromSearch(context), - new ContextNodesInclusionFactory(DisplayVocabulary.CONTEXT_NODES_URI, displayOntModel, context)); + new SearchQueryHandler(DisplayVocabulary.CONTEXT_NODES_URI, displayOntModel, context)); indexer.addObj2Doc(translator); indexer.setLuceneIndexFactory(lif); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/IndividualToSolrDocument.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/IndividualToSolrDocument.java index 4d2d1858d..df0b589eb 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/IndividualToSolrDocument.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/IndividualToSolrDocument.java @@ -13,6 +13,10 @@ import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; import org.joda.time.DateTime; +import com.hp.hpl.jena.rdf.model.Property; +import com.hp.hpl.jena.rdf.model.RDFNode; +import com.hp.hpl.jena.rdf.model.Resource; +import com.hp.hpl.jena.rdf.model.StmtIterator; import com.hp.hpl.jena.vocabulary.OWL; import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement; @@ -23,7 +27,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.VClass; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.search.IndexingException; import edu.cornell.mannlib.vitro.webapp.search.VitroTermNames; -import edu.cornell.mannlib.vitro.webapp.search.beans.ContextNodesInclusionFactory; +import edu.cornell.mannlib.vitro.webapp.search.beans.SearchQueryHandler; import edu.cornell.mannlib.vitro.webapp.search.beans.IndividualProhibitedFromSearch; import edu.cornell.mannlib.vitro.webapp.search.beans.ProhibitedFromSearch; import edu.cornell.mannlib.vitro.webapp.search.docbuilder.Obj2DocIface; @@ -42,16 +46,16 @@ public class IndividualToSolrDocument implements Obj2DocIface { private IndividualProhibitedFromSearch individualProhibitedFromSearch; - private ContextNodesInclusionFactory contextNodesInclusionFactory; + private SearchQueryHandler searchQueryHandler; public IndividualToSolrDocument(ProhibitedFromSearch classesProhibitedFromSearch, IndividualProhibitedFromSearch individualProhibitedFromSearch, - ContextNodesInclusionFactory contextNodesInclusionFactory){ + SearchQueryHandler searchQueryHandler){ this.classesProhibitedFromSearch = classesProhibitedFromSearch; this.individualProhibitedFromSearch = individualProhibitedFromSearch; - this.contextNodesInclusionFactory = contextNodesInclusionFactory; + this.searchQueryHandler = searchQueryHandler; } @SuppressWarnings("static-access") @@ -156,12 +160,12 @@ public class IndividualToSolrDocument implements Obj2DocIface { long tContextNodes = System.currentTimeMillis(); String contextNodePropertyValues = ""; - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithEducationalTraining(ent.getURI()); - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithRole(ent.getURI()); - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithPosition(ent.getURI()); - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithRelationship(ent.getURI()); - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithAwardReceipt(ent.getURI()); - contextNodePropertyValues += contextNodesInclusionFactory.getPropertiesAssociatedWithInformationResource(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithEducationalTraining(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithRole(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithPosition(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithRelationship(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithAwardReceipt(ent.getURI()); + contextNodePropertyValues += searchQueryHandler.getPropertiesAssociatedWithInformationResource(ent.getURI()); doc.addField(term.CONTEXTNODE, contextNodePropertyValues); @@ -237,8 +241,8 @@ public class IndividualToSolrDocument implements Obj2DocIface { log.debug("time to include data property statements, object property statements in the index: " + Long.toString(System.currentTimeMillis() - tPropertyStatements)); - doc.addField(term.ALLTEXT, value); - doc.addField(term.ALLTEXTUNSTEMMED, value); + doc.addField(term.ALLTEXT, value,ALL_TEXT_BOOST); + doc.addField(term.ALLTEXTUNSTEMMED, value,ALL_TEXT_BOOST); } return doc; @@ -282,5 +286,6 @@ public class IndividualToSolrDocument implements Obj2DocIface { } public static float NAME_BOOST = 3.0F; + public static float ALL_TEXT_BOOST = 2.0F; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/SolrSetup.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/SolrSetup.java index 0f142c6bb..3d910fb45 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/SolrSetup.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/solr/SolrSetup.java @@ -23,7 +23,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.VitroFilterUtils; import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.VitroFilters; import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext; import edu.cornell.mannlib.vitro.webapp.dao.jena.SearchReindexingListener; -import edu.cornell.mannlib.vitro.webapp.search.beans.ContextNodesInclusionFactory; +import edu.cornell.mannlib.vitro.webapp.search.beans.SearchQueryHandler; import edu.cornell.mannlib.vitro.webapp.search.beans.IndividualProhibitedFromSearch; import edu.cornell.mannlib.vitro.webapp.search.beans.ObjectSourceIface; import edu.cornell.mannlib.vitro.webapp.search.beans.ProhibitedFromSearch; @@ -76,7 +76,7 @@ public class SolrSetup implements javax.servlet.ServletContextListener{ IndividualToSolrDocument indToSolrDoc = new IndividualToSolrDocument( new ProhibitedFromSearch(DisplayVocabulary.PRIMARY_LUCENE_INDEX_URI, displayOntModel), new IndividualProhibitedFromSearch(context), - new ContextNodesInclusionFactory(DisplayVocabulary.CONTEXT_NODES_URI, displayOntModel, context)); + new SearchQueryHandler(DisplayVocabulary.CONTEXT_NODES_URI, displayOntModel, context)); List o2d = new ArrayList(); o2d.add(indToSolrDoc);