Changeset 5202
- Timestamp:
- 05/15/14 12:19:25 (10 years ago)
- Location:
- vlo/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/trunk
- Property svn:mergeinfo changed
/vlo/branches/vlo-3.0 (added) merged: 5201
- Property svn:mergeinfo changed
-
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/solr/impl/AbstractSolrQueryFactory.java
r4972 r5202 20 20 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 21 21 import java.util.ArrayList; 22 import java.util.Iterator; 22 23 import java.util.List; 23 24 import java.util.Map; … … 73 74 } 74 75 76 /** 77 * Creates an OR filter query over the provided facet/value pairs (a query 78 * that requests all records matching ANY of the facet/value pairs) 79 * 80 * @param facetValues map with facet/value pairs that should be matched 81 * @return 82 */ 83 protected final String createFilterOrQuery(Map<String, String> facetValues) { 84 // escape value and wrap in quotes to make literal query 85 final StringBuilder queryBuilder = new StringBuilder(); 86 final Iterator<Map.Entry<String, String>> iterator = facetValues.entrySet().iterator(); 87 while (iterator.hasNext()) { 88 final Map.Entry<String, String> facetValue = iterator.next(); 89 queryBuilder.append(createFilterQuery(facetValue.getKey(), facetValue.getValue())); 90 if (iterator.hasNext()) { 91 queryBuilder.append(" OR "); 92 } 93 } 94 return queryBuilder.toString(); 95 } 96 75 97 } -
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/solr/impl/SolrDocumentQueryFactoryImpl.java
r4852 r5202 17 17 package eu.clarin.cmdi.vlo.service.solr.impl; 18 18 19 import com.google.common.collect.ImmutableMap; 19 20 import eu.clarin.cmdi.vlo.FacetConstants; 20 21 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; … … 35 36 36 37 /** 37 * 38 * 38 39 * @param documentFields fields that should be included in document queries 39 40 */ … … 63 64 query.setQuery(SOLR_SEARCH_ALL); 64 65 // filter by ID 65 query.addFilterQuery(createFilterQuery(FacetConstants.FIELD_ID, docId)); 66 // check for ID value in both 'id' and 'self link' fields, both ought to 67 // be unique and self link use to be ID in old VLO, so this should keep old 68 // URL's valid with a minimal likelihood of clashes 69 final ImmutableMap<String, String> idOrQueryMap = ImmutableMap.<String, String>builder() 70 .put(FacetConstants.FIELD_ID, docId) 71 .put(FacetConstants.FIELD_SELF_LINK, docId) 72 .build(); 73 query.addFilterQuery(createFilterOrQuery(idOrQueryMap)); 74 66 75 // one result max 67 76 query.setRows(1); -
vlo/trunk/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/service/solr/impl/SolrDocumentQueryFactoryImplTest.java
r4966 r5202 75 75 @Test 76 76 public void testCreateDocumentQueryForDocId() { 77 final SolrQuery query = instance.createDocumentQuery("document Id");77 final SolrQuery query = instance.createDocumentQuery("document\"Id"); 78 78 79 79 final String[] filterQueries = query.getFilterQueries(); 80 80 assertEquals(1, filterQueries.length); 81 assertEquals("id:\"documentId\"", filterQueries[0]); 81 // expecting query that looks in both id and selflink fields with properly escaped values 82 assertEquals("id:\"document\\\"Id\" OR _selfLink:\"document\\\"Id\"", filterQueries[0]); 82 83 83 84 final String fields = query.getFields();
Note: See TracChangeset
for help on using the changeset viewer.