Search in sources :

Example 21 with OrcidSolrResult

use of org.orcid.utils.solr.entities.OrcidSolrResult in project ORCID-Source by ORCID.

the class SolrDaoTest method queryFieldWithBoost.

@Test
public void queryFieldWithBoost() throws Exception {
    OrcidSolrDocument firstOrcidDoc = buildFirstOrcid();
    firstOrcidDoc.setOrcid(firstOrcid);
    firstOrcidDoc.setFamilyName("James");
    OrcidSolrDocument secondOrcidDoc = buildSupplementaryOrcid();
    secondOrcidDoc.setOrcid(secondOrcid);
    secondOrcidDoc.setGivenNames("James");
    solrDao.persist(firstOrcidDoc);
    solrDao.persist(secondOrcidDoc);
    String familyNameGivenNameQuery = "{!edismax qf='family-name^1.0 given-names^2.0'}James";
    List<OrcidSolrResult> solrResults = solrDao.findByDocumentCriteria(familyNameGivenNameQuery, null, null).getResults();
    assertTrue(solrResults.size() == 2);
    assertTrue(solrResults.get(0).getOrcid().equals(secondOrcid));
    assertTrue(solrResults.get(1).getOrcid().equals(firstOrcid));
}
Also used : OrcidSolrResult(org.orcid.utils.solr.entities.OrcidSolrResult) OrcidSolrDocument(org.orcid.utils.solr.entities.OrcidSolrDocument) Test(org.junit.Test)

Example 22 with OrcidSolrResult

use of org.orcid.utils.solr.entities.OrcidSolrResult in project ORCID-Source by ORCID.

the class SolrDaoTest method queryFieldWithKeyword.

@Test
public void queryFieldWithKeyword() throws Exception {
    buildAndPersistFirstOrcid();
    OrcidSolrDocument secondDoc = buildSupplementaryOrcid();
    String subjectKeyword1 = "Advanced Muppetry";
    String subjectKeyword2 = "Basic Muppetry";
    secondDoc.setOrcid(secondOrcid);
    secondDoc.setKeywords(Arrays.asList(subjectKeyword1, subjectKeyword2));
    persistOrcid(secondDoc);
    String familyNameKeywordsQueryString = "given-names:given AND keyword:basic";
    List<OrcidSolrResult> solrResults = solrDao.findByDocumentCriteria(familyNameKeywordsQueryString, null, null).getResults();
    assertTrue(solrResults.size() == 1);
    OrcidSolrResult result = solrResults.get(0);
    assertEquals(secondOrcid, result.getOrcid());
    familyNameKeywordsQueryString = "given-names:given AND keyword:advanced";
    solrResults = solrDao.findByDocumentCriteria(familyNameKeywordsQueryString, null, null).getResults();
    assertTrue(solrResults.size() == 1);
    result = solrResults.get(0);
    assertEquals(secondOrcid, result.getOrcid());
}
Also used : OrcidSolrResult(org.orcid.utils.solr.entities.OrcidSolrResult) OrcidSolrDocument(org.orcid.utils.solr.entities.OrcidSolrDocument) Test(org.junit.Test)

Example 23 with OrcidSolrResult

use of org.orcid.utils.solr.entities.OrcidSolrResult in project ORCID-Source by ORCID.

the class SolrDaoTest method queryFieldWeyword.

@Test
public void queryFieldWeyword() throws Exception {
    buildAndPersistFirstOrcid();
    OrcidSolrDocument secondDoc = buildSupplementaryOrcid();
    String subjectKeyword1 = "Advanced Muppetry";
    String subjectKeyword2 = "Basic Muppetry";
    secondDoc.setOrcid(secondOrcid);
    secondDoc.setKeywords(Arrays.asList(subjectKeyword1, subjectKeyword2));
    persistOrcid(secondDoc);
    String familyNameKeywordsQueryString = "given-names:given AND keyword:basic";
    List<OrcidSolrResult> solrResults = solrDao.findByDocumentCriteria(familyNameKeywordsQueryString, null, null).getResults();
    assertTrue(solrResults.size() == 1);
    OrcidSolrResult result = solrResults.get(0);
    assertEquals(secondOrcid, result.getOrcid());
    familyNameKeywordsQueryString = "given-names:given AND keyword:advanced";
    solrResults = solrDao.findByDocumentCriteria(familyNameKeywordsQueryString, null, null).getResults();
    assertTrue(solrResults.size() == 1);
    result = solrResults.get(0);
    assertEquals(secondOrcid, result.getOrcid());
}
Also used : OrcidSolrResult(org.orcid.utils.solr.entities.OrcidSolrResult) OrcidSolrDocument(org.orcid.utils.solr.entities.OrcidSolrDocument) Test(org.junit.Test)

Example 24 with OrcidSolrResult

use of org.orcid.utils.solr.entities.OrcidSolrResult in project ORCID-Source by ORCID.

the class SolrDaoTest method queryStringSearchPatent.

@Test
public void queryStringSearchPatent() throws Exception {
    OrcidSolrDocument firstOrcid = buildAndPersistFirstOrcid();
    String patentQueryString = "patent-numbers:Elec-hammer01X%3A";
    OrcidSolrResults orcidSolrResults = solrDao.findByDocumentCriteria(patentQueryString, null, null);
    List<OrcidSolrResult> solrResultsList = orcidSolrResults.getResults();
    assertTrue(solrResultsList.size() == 1);
    assertEquals(firstOrcid.getOrcid(), solrResultsList.get(0).getOrcid());
}
Also used : OrcidSolrResult(org.orcid.utils.solr.entities.OrcidSolrResult) OrcidSolrDocument(org.orcid.utils.solr.entities.OrcidSolrDocument) OrcidSolrResults(org.orcid.utils.solr.entities.OrcidSolrResults) Test(org.junit.Test)

Example 25 with OrcidSolrResult

use of org.orcid.utils.solr.entities.OrcidSolrResult in project ORCID-Source by ORCID.

the class OrcidSearchManagerImpl method buildSearchResultsFromPublicProfile.

private List<OrcidSearchResult> buildSearchResultsFromPublicProfile(List<OrcidSolrResult> solrResults) {
    List<OrcidSearchResult> orcidSearchResults = new ArrayList<OrcidSearchResult>();
    for (OrcidSolrResult solrResult : solrResults) {
        OrcidMessage orcidMessage = null;
        String orcid = solrResult.getOrcid();
        try {
            orcidSecurityManager.checkProfile(orcid);
        } catch (DeactivatedException | LockedException | OrcidDeprecatedException x) {
            OrcidSearchResult orcidSearchResult = new OrcidSearchResult();
            RelevancyScore relevancyScore = new RelevancyScore();
            relevancyScore.setValue(solrResult.getRelevancyScore());
            orcidSearchResult.setRelevancyScore(relevancyScore);
            OrcidProfile orcidProfile = new OrcidProfile();
            orcidProfile.setOrcidIdentifier(new OrcidIdentifier(jpaJaxbAdapter.getOrcidIdBase(orcid)));
            OrcidHistory history = new OrcidHistory();
            Date recordLastModified = profileDaoReadOnly.retrieveLastModifiedDate(orcid);
            history.setLastModifiedDate(new LastModifiedDate(DateUtils.convertToXMLGregorianCalendar(recordLastModified)));
            orcidProfile.setOrcidHistory(history);
            orcidSearchResult.setOrcidProfile(orcidProfile);
            orcidSearchResults.add(orcidSearchResult);
            continue;
        }
        if (cachingSource.equals(SOLR)) {
            try (Reader reader = solrDao.findByOrcidAsReader(orcid)) {
                if (reader != null) {
                    BufferedReader br = new BufferedReader(reader);
                    orcidMessage = OrcidMessage.unmarshall(br);
                }
            } catch (IOException e) {
                throw new OrcidSearchException("Error closing record stream from solr search results for orcid: " + orcid, e);
            }
        }
        OrcidProfile orcidProfile = null;
        if (orcidMessage == null) {
            // Fall back to DB
            orcidProfile = orcidProfileCacheManager.retrievePublicBio(orcid);
        } else {
            orcidProfile = orcidMessage.getOrcidProfile();
        }
        if (orcidProfile != null) {
            OrcidSearchResult orcidSearchResult = new OrcidSearchResult();
            RelevancyScore relevancyScore = new RelevancyScore();
            relevancyScore.setValue(solrResult.getRelevancyScore());
            orcidSearchResult.setRelevancyScore(relevancyScore);
            OrcidWorks orcidWorksTitlesOnly = new OrcidWorks();
            OrcidWorks fullOrcidWorks = orcidProfile.retrieveOrcidWorks();
            if (fullOrcidWorks != null && !fullOrcidWorks.getOrcidWork().isEmpty()) {
                for (OrcidWork fullOrcidWork : fullOrcidWorks.getOrcidWork()) {
                    OrcidWork orcidWorkSubset = new OrcidWork();
                    orcidWorkSubset.setVisibility(fullOrcidWork.getVisibility());
                    orcidWorkSubset.setWorkTitle(fullOrcidWork.getWorkTitle());
                    orcidWorkSubset.setWorkExternalIdentifiers(fullOrcidWork.getWorkExternalIdentifiers());
                    orcidWorksTitlesOnly.getOrcidWork().add(orcidWorkSubset);
                }
            }
            FundingList reducedFundings = new FundingList();
            FundingList fullOrcidFundings = orcidProfile.retrieveFundings();
            if (fullOrcidFundings != null && !fullOrcidFundings.getFundings().isEmpty()) {
                for (Funding fullOrcidFunding : fullOrcidFundings.getFundings()) {
                    Funding reducedFunding = new Funding();
                    reducedFunding.setVisibility(fullOrcidFunding.getVisibility());
                    reducedFunding.setDescription(fullOrcidFunding.getDescription());
                    reducedFunding.setTitle(fullOrcidFunding.getTitle());
                    reducedFundings.getFundings().add(reducedFunding);
                }
            }
            orcidProfile.setOrcidWorks(orcidWorksTitlesOnly);
            orcidProfile.setFundings(reducedFundings);
            orcidSearchResult.setOrcidProfile(orcidProfile);
            orcidSearchResults.add(orcidSearchResult);
        }
    }
    return orcidSearchResults;
}
Also used : LastModifiedDate(org.orcid.jaxb.model.message.LastModifiedDate) LockedException(org.orcid.core.security.aop.LockedException) OrcidSearchException(org.orcid.core.exception.OrcidSearchException) Funding(org.orcid.jaxb.model.message.Funding) ArrayList(java.util.ArrayList) OrcidWork(org.orcid.jaxb.model.message.OrcidWork) Reader(java.io.Reader) BufferedReader(java.io.BufferedReader) IOException(java.io.IOException) Date(java.util.Date) LastModifiedDate(org.orcid.jaxb.model.message.LastModifiedDate) DeactivatedException(org.orcid.core.exception.DeactivatedException) OrcidWorks(org.orcid.jaxb.model.message.OrcidWorks) OrcidSearchResult(org.orcid.jaxb.model.message.OrcidSearchResult) RelevancyScore(org.orcid.jaxb.model.message.RelevancyScore) OrcidProfile(org.orcid.jaxb.model.message.OrcidProfile) OrcidSolrResult(org.orcid.utils.solr.entities.OrcidSolrResult) FundingList(org.orcid.jaxb.model.message.FundingList) OrcidIdentifier(org.orcid.jaxb.model.message.OrcidIdentifier) OrcidHistory(org.orcid.jaxb.model.message.OrcidHistory) OrcidMessage(org.orcid.jaxb.model.message.OrcidMessage) OrcidDeprecatedException(org.orcid.core.exception.OrcidDeprecatedException) BufferedReader(java.io.BufferedReader)

Aggregations

OrcidSolrResult (org.orcid.utils.solr.entities.OrcidSolrResult)28 OrcidSolrResults (org.orcid.utils.solr.entities.OrcidSolrResults)13 OrcidSolrDocument (org.orcid.utils.solr.entities.OrcidSolrDocument)11 ArrayList (java.util.ArrayList)9 Test (org.junit.Test)9 OrcidMessage (org.orcid.jaxb.model.message.OrcidMessage)8 OrcidSearchResult (org.orcid.jaxb.model.message.OrcidSearchResult)8 OrcidSearchResults (org.orcid.jaxb.model.message.OrcidSearchResults)6 BufferedReader (java.io.BufferedReader)2 IOException (java.io.IOException)2 Reader (java.io.Reader)2 Date (java.util.Date)2 SolrQuery (org.apache.solr.client.solrj.SolrQuery)2 SolrServerException (org.apache.solr.client.solrj.SolrServerException)2 QueryResponse (org.apache.solr.client.solrj.response.QueryResponse)2 SolrDocument (org.apache.solr.common.SolrDocument)2 DeactivatedException (org.orcid.core.exception.DeactivatedException)2 OrcidDeprecatedException (org.orcid.core.exception.OrcidDeprecatedException)2 OrcidSearchException (org.orcid.core.exception.OrcidSearchException)2 LockedException (org.orcid.core.security.aop.LockedException)2