From 7ce7f7a1acf22c2f48b2533247277adb86fa403b Mon Sep 17 00:00:00 2001 From: deepakkoni Date: Mon, 11 Jul 2011 22:20:27 +0000 Subject: [PATCH] NIHVIVO-2847, NIHVIVO-2827, NIHVIVO-2862 1) The ArrayList that was used for checking blacklisted classes has been removed from IndividualToSolrDoc. Now, any change in search.n3 is reflected on deploying vivo with a fresh database. 2) core:URLLink (NIHVIVO-2847) and Class URI(NIHVIVO-2827) don't appear in search results anymore. 3) File and FileByteStream are also added to the blacklisted class list (search.n3) --- .../IndividualProhibitedFromSearchImpl.java | 12 ++++- .../search/solr/IndividualToSolrDocument.java | 50 +++---------------- 2 files changed, 17 insertions(+), 45 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/beans/IndividualProhibitedFromSearchImpl.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/beans/IndividualProhibitedFromSearchImpl.java index f745231dc..6080eb0f8 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/beans/IndividualProhibitedFromSearchImpl.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/beans/IndividualProhibitedFromSearchImpl.java @@ -57,18 +57,28 @@ public class IndividualProhibitedFromSearchImpl implements IndividualProhibitedF private Query makeAskQueryForUri( String uri ){ String queryString = "PREFIX fn: \n" + + "ASK { \n" + " <"+uri+"> <" + RDF.type.getURI() + "> ?type . \n" + + " FILTER ( \n" + + " ( fn:starts-with( str(?type), \"" + VitroVocabulary.vitroURI + "\" ) \n" + " && \n"+ - " ! fn:starts-with( str(?type), \"" + VitroVocabulary.vitroURI + "Flag\" ) ) || \n" + + " ! fn:starts-with( str(?type), \"" + VitroVocabulary.vitroURI + "Flag\" ) ) || \n" + + " fn:starts-with( str(?type), \"" + VitroVocabulary.PUBLIC + "\" ) || \n" + + " str(?type) = \"" + OWL.ObjectProperty.getURI() + "\" || \n" + + " str(?type) = \"" + OWL.DatatypeProperty.getURI() + "\" || \n" + + " str(?type) = \"" + OWL.AnnotationProperty.getURI() + "\" \n" + + " )\n" + "}" ; + + return QueryFactory.create( queryString ); } } 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 971d72202..384a8fb4c 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 @@ -40,10 +40,6 @@ public class IndividualToSolrDocument { public List documentModifiers = new ArrayList(); - private static List contextNodeClassNames = new ArrayList(); - - private static List blackListedClasses = new ArrayList(); - public IndividualToSolrDocument( ClassProhibitedFromSearch classesProhibitedFromSearch, IndividualProhibitedFromSearch individualProhibitedFromSearch){ @@ -60,8 +56,7 @@ public class IndividualToSolrDocument { this.classesProhibitedFromSearch = classesProhibitedFromSearch; this.individualProhibitedFromSearch = individualProhibitedFromSearch; this.documentModifiers = docModifiers; - fillContextNodes(); - fillInBlackListedClasses(); + } @@ -259,9 +254,11 @@ public class IndividualToSolrDocument { //index individuals of type owl:Thing, just don't add owl:Thing as the type field in the index continue; } else if(clz.getURI().startsWith(OWL.NS)){ - throw new SkipIndividualException("not indexing " + ind.getURI() + " because of type " + clz.getURI() ); - } else if(contextNodeClassNames.contains(superLclName) || blackListedClasses.contains(superLclName)) { // check to see if context node is being indexed. - throw new SkipIndividualException("not indexing " + ind.getURI() + " because of context node type " + clz.getURI() ); + throw new SkipIndividualException("not indexing " + ind.getURI() + " because of type " + clz.getURI() ); + } + // do not index individuals of type Role, AdvisingRelationShip, Authorship, etc.(see search.n3 for more information) + else if(classesProhibitedFromSearch.isClassProhibitedFromSearch(clz.getURI())){ + throw new SkipIndividualException("not indexing " + ind.getURI() + " because of prohibited type " + clz.getURI() ); } else { if( !prohibited && classesProhibitedFromSearch.isClassProhibitedFromSearch(clz.getURI())) prohibited = true; @@ -334,41 +331,6 @@ public class IndividualToSolrDocument { } } } - - private void fillContextNodes(){ - IndividualToSolrDocument.contextNodeClassNames.add("Role"); - IndividualToSolrDocument.contextNodeClassNames.add("AttendeeRole"); - IndividualToSolrDocument.contextNodeClassNames.add("ClinicalRole"); - IndividualToSolrDocument.contextNodeClassNames.add("LeaderRole"); - IndividualToSolrDocument.contextNodeClassNames.add("MemberRole"); - IndividualToSolrDocument.contextNodeClassNames.add("OutreachProviderRole"); - IndividualToSolrDocument.contextNodeClassNames.add("PresenterRole"); - IndividualToSolrDocument.contextNodeClassNames.add("ResearcherRole"); - IndividualToSolrDocument.contextNodeClassNames.add("InvestigatorRole"); - IndividualToSolrDocument.contextNodeClassNames.add("CoPrincipalInvestigatorRole"); - IndividualToSolrDocument.contextNodeClassNames.add("PrincipalInvestigatorRole"); - IndividualToSolrDocument.contextNodeClassNames.add("ServiceProviderRole"); - IndividualToSolrDocument.contextNodeClassNames.add("TeacherRole"); - IndividualToSolrDocument.contextNodeClassNames.add("Position"); - IndividualToSolrDocument.contextNodeClassNames.add("FacultyAdministrativePosition"); - IndividualToSolrDocument.contextNodeClassNames.add("FacultyPosition"); - IndividualToSolrDocument.contextNodeClassNames.add("LibrarianPosition"); - IndividualToSolrDocument.contextNodeClassNames.add("Non-AcademicPosition"); - IndividualToSolrDocument.contextNodeClassNames.add("Non-FacultyAcademicPosition"); - IndividualToSolrDocument.contextNodeClassNames.add("PostdoctoralPosition"); - IndividualToSolrDocument.contextNodeClassNames.add("AdvisingRelationship"); - IndividualToSolrDocument.contextNodeClassNames.add("Authorship"); - IndividualToSolrDocument.contextNodeClassNames.add("AcademicDegree"); - - } - - // bk392 : Ideally this needs to be removed and the check for a blacklisted class - // has to made by firing a query against the display model which contains - // blacklisted classes (grabbed from search.n3) - private void fillInBlackListedClasses() { - //class that needs to be excluded from search - IndividualToSolrDocument.blackListedClasses.add("URLLink"); - } public static float NAME_BOOST = 1.2F;