Changeset 531

Show
Ignore:
Timestamp:
09/22/08 11:52:29 (5 years ago)
Author:
fyffem
Message:

Search should now have working range queries for chemical analysis/oxide analysis. However, I can't test it in test because I don't have permissions... so I just made sure everything loads in deployment.

Again, it's probably not as clean as it could be and should probably be more generic. I will work on that as time goes on.

In addition, it's currently only applicable for whatever format the min/max are in and ignores the type of range. I couldn't remember what we decided on that so it's just going to stay as is.

Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/mpdb-common/src/edu/rpi/metpetdb/client/model/ChemicalAnalysisElement.java

    r530 r531  
    55import org.hibernate.search.annotations.Index; 
    66import org.hibernate.search.annotations.IndexedEmbedded; 
     7import org.hibernate.search.annotations.Store; 
    78 
    89import edu.rpi.metpetdb.server.search.bridges.FloatBridge; 
     
    1617        private Float precision; 
    1718        private String precisionUnit; 
     19        @Field(index = Index.UN_TOKENIZED) 
     20        @FieldBridge(impl = FloatBridge.class) 
    1821        private Float minAmount; 
     22        @Field(index = Index.UN_TOKENIZED) 
     23        @FieldBridge(impl = FloatBridge.class) 
    1924        private Float maxAmount; 
     25        @Field(index = Index.TOKENIZED, store = Store.NO) 
    2026        private String measurementUnit; 
    2127        @IndexedEmbedded(prefix = "element_") 
  • trunk/mpdb-common/src/edu/rpi/metpetdb/client/model/ChemicalAnalysisOxide.java

    r530 r531  
    55import org.hibernate.search.annotations.Index; 
    66import org.hibernate.search.annotations.IndexedEmbedded; 
     7import org.hibernate.search.annotations.Store; 
    78 
    89import edu.rpi.metpetdb.server.search.bridges.FloatBridge; 
     
    1617        private Float precision; 
    1718        private String precisionUnit; 
     19        @Field(index = Index.UN_TOKENIZED) 
     20        @FieldBridge(impl = FloatBridge.class) 
    1821        private Float minAmount; 
     22        @Field(index = Index.UN_TOKENIZED) 
     23        @FieldBridge(impl = FloatBridge.class) 
    1924        private Float maxAmount; 
     25        @Field(index = Index.TOKENIZED, store = Store.NO) 
    2026        private String measurementUnit; 
    2127 
  • trunk/mpdb-server/src/edu/rpi/metpetdb/server/search/SearchDb.java

    r523 r531  
    99import org.apache.lucene.search.BooleanClause; 
    1010import org.apache.lucene.search.BooleanQuery; 
     11import org.apache.lucene.search.FilteredQuery; 
     12import org.apache.lucene.search.RangeFilter; 
    1113import org.apache.lucene.search.RangeQuery; 
    1214import org.apache.lucene.search.TermQuery; 
     15import org.apache.solr.util.NumberUtils; 
    1316import org.hibernate.Session; 
    1417import org.hibernate.search.FullTextSession; 
     
    1720import edu.rpi.metpetdb.client.model.DateSpan; 
    1821import edu.rpi.metpetdb.client.model.Sample; 
     22import edu.rpi.metpetdb.client.model.SearchElement; 
     23import edu.rpi.metpetdb.client.model.SearchOxide; 
    1924import edu.rpi.metpetdb.client.model.SearchSample; 
    2025import edu.rpi.metpetdb.client.model.User; 
     
    6974                                // ignore it 
    7075                        } else { // otherwise, what type of returned data is it? 
    71                                 if (methodResult instanceof Set) { // if a set of data is 
     76                                if (columnName.equals("subsample_chemicalAnalysis_oxides")) { 
     77                                        if (((Set) methodResult).size() > 0) { 
     78                                                final BooleanQuery setQuery = new BooleanQuery(); 
     79                                                for (SearchOxide o : (Set<SearchOxide>) methodResult) { 
     80                                                        final RangeFilter rangeFilterOnMin = new RangeFilter("subsample_chemicalAnalysis_oxides_minAmount", NumberUtils.float2sortableStr(-99999), NumberUtils.float2sortableStr(o 
     81                                                                        .getUpperBound()),true, true); 
     82                                                        final RangeFilter rangeFilterOnMax = new RangeFilter("subsample_chemicalAnalysis_oxides_minAmount", NumberUtils.float2sortableStr(o 
     83                                                                        .getLowerBound()), NumberUtils.float2sortableStr(99999),true, true); 
     84                                                        final TermQuery oxideQuery = new TermQuery(new Term("subsample_chemicalAnalysis_oxides_oxide_species",                                                  o.getSpecies())); 
     85                                                        final FilteredQuery filterOnMinQuery = new FilteredQuery(oxideQuery, rangeFilterOnMin); 
     86                                                        final FilteredQuery filterOnBothQuery = new FilteredQuery(filterOnMinQuery, rangeFilterOnMax); 
     87                                                        setQuery.add(filterOnBothQuery, BooleanClause.Occur.SHOULD); 
     88                                                } 
     89                                                // require that one of these results be found in the 
     90                                                // full query 
     91                                                fullQuery.add(setQuery, BooleanClause.Occur.MUST); 
     92                                        } 
     93                                } 
     94                                else if (columnName 
     95                                                .equals("subsample_chemicalAnalysis_elements")) { 
     96                                        if (((Set) methodResult).size() > 0) { 
     97                                                final BooleanQuery setQuery = new BooleanQuery(); 
     98                                                for (SearchElement o : (Set<SearchElement>) methodResult) { 
     99                                                        final RangeFilter rangeFilterOnMin = new RangeFilter("subsample_chemicalAnalysis_elements_minAmount", NumberUtils.float2sortableStr(-99999), NumberUtils.float2sortableStr(o 
     100                                                                        .getUpperBound()),true, true); 
     101                                                        final RangeFilter rangeFilterOnMax = new RangeFilter("subsample_chemicalAnalysis_elements_minAmount", NumberUtils.float2sortableStr(o 
     102                                                                        .getLowerBound()), NumberUtils.float2sortableStr(99999),true, true); 
     103                                                        final TermQuery elementQuery = new TermQuery( 
     104                                                                        new Term( 
     105                                                                                        "subsample_chemicalAnalysis_elements_element_symbol", 
     106                                                                                        o.getElementSymbol())); 
     107                                                        final FilteredQuery filterOnMinQuery = new FilteredQuery(elementQuery, rangeFilterOnMin); 
     108                                                        final FilteredQuery filterOnBothQuery = new FilteredQuery(filterOnMinQuery, rangeFilterOnMax); 
     109                                                        setQuery.add(filterOnBothQuery, BooleanClause.Occur.SHOULD); 
     110                                                } 
     111                                                // require that one of these results be found in the 
     112                                                // full query 
     113                                                fullQuery.add(setQuery, BooleanClause.Occur.MUST); 
     114                                        } 
     115                                } 
     116                                else if (methodResult instanceof Set) { // if a set of data is 
    72117                                        // returned, it should be an 
    73118                                        // OR query 
  • trunk/mpdb-test-server/test-data/test-sample-data.xml

    r499 r531  
    308308  <elements element_id="101" name="Zinc" symbol="Zn" atomic_number="30" weight="65.38"/> 
    309309  <elements element_id="102" name="Zirconium" symbol="Zr" atomic_number="40" weight="91.224"/> 
    310   <chemical_analysis_elements chemical_analysis_id="1" element_id="1" amount="5.0" precision="0.0" precision_type="ABS"/> 
    311   <chemical_analysis_elements chemical_analysis_id="1" element_id="14" amount="5.0" precision="0.0" precision_type="ABS"/> 
    312   <chemical_analysis_elements chemical_analysis_id="2" element_id="1" amount="10.0" precision="0.0" precision_type="ABS"/> 
    313   <chemical_analysis_elements chemical_analysis_id="2" element_id="14" amount="10.0" precision="0.0" precision_type="ABS"/><chemical_analysis_elements chemical_analysis_id="3" element_id="1" amount="6.0"></chemical_analysis_elements> 
    314         <chemical_analysis_elements chemical_analysis_id="3" element_id="14" amount="8"></chemical_analysis_elements> 
     310  <chemical_analysis_elements chemical_analysis_id="1" element_id="1" amount="5.0" precision="0.0" precision_type="ABS" measurement_unit="ppm" min_amount="3" max_amount="7"/> 
     311  <chemical_analysis_elements chemical_analysis_id="1" element_id="14" amount="5.0" precision="0.0" precision_type="ABS" measurement_unit="ppm" min_amount="3" max_amount="7"/> 
     312  <chemical_analysis_elements chemical_analysis_id="2" element_id="1" amount="10.0" precision="0.0" precision_type="ABS" measurement_unit="ppm" min_amount="7" max_amount="13"/> 
     313  <chemical_analysis_elements chemical_analysis_id="2" element_id="14" amount="10.0" precision="0.0" precision_type="ABS" measurement_unit="ppm" min_amount="7" max_amount="13"/><chemical_analysis_elements chemical_analysis_id="3" element_id="1" amount="6.0" measurement_unit="ppm" min_amount="4" max_amount="8"></chemical_analysis_elements> 
     314        <chemical_analysis_elements chemical_analysis_id="3" element_id="14" amount="8" measurement_unit="ppm" min_amount="6" max_amount="10"></chemical_analysis_elements> 
    315315        <oxides oxide_id="1" element_id="1" oxidation_state="3" species="Al2O3" weight="101.96" cations_per_oxide="2" conversion_factor="1.8894427663399"/> 
    316316  <oxides oxide_id="2" element_id="3" oxidation_state="5" species="Sb2O5" weight="323.517" cations_per_oxide="2" conversion_factor="1.32850279237845"/> 
     
    354354  <oxides oxide_id="40" element_id="101" oxidation_state="2" species="ZnO" weight="81.38" cations_per_oxide="1" conversion_factor="1.24472315692872"/> 
    355355  <oxides oxide_id="41" element_id="102" oxidation_state="4" species="ZrO2" weight="123.22" cations_per_oxide="1" conversion_factor="1.35074103306148"/> 
    356   <chemical_analysis_oxides chemical_analysis_id="1" oxide_id="1" amount="10.0" precision="0.0" precision_type="ABS"/> 
    357   <chemical_analysis_oxides chemical_analysis_id="1" oxide_id="6" amount="10.0" precision="0.0" precision_type="ABS"/> 
    358   <chemical_analysis_oxides chemical_analysis_id="2" oxide_id="1" amount="15.0" precision="0.0" precision_type="ABS"/> 
    359   <chemical_analysis_oxides chemical_analysis_id="2" oxide_id="6" amount="15.0" precision="0.0" precision_type="ABS"/><chemical_analysis_oxides chemical_analysis_id="5" oxide_id="1" amount="13.0"></chemical_analysis_oxides> 
    360         <chemical_analysis_oxides chemical_analysis_id="6" oxide_id="6" amount="9"></chemical_analysis_oxides> 
     356  <chemical_analysis_oxides chemical_analysis_id="1" oxide_id="1" amount="10.0" precision="0.0" precision_type="ABS" measurement_unit="ppm" min_amount="7" max_amount="12"/> 
     357  <chemical_analysis_oxides chemical_analysis_id="1" oxide_id="6" amount="10.0" precision="0.0" precision_type="ABS" measurement_unit="ppm" min_amount="7" max_amount="13"/> 
     358  <chemical_analysis_oxides chemical_analysis_id="2" oxide_id="1" amount="15.0" precision="0.0" precision_type="ABS" measurement_unit="ppm" min_amount="12" max_amount="18"/> 
     359  <chemical_analysis_oxides chemical_analysis_id="2" oxide_id="6" amount="15.0" precision="0.0" precision_type="ABS" measurement_unit="ppm" min_amount="12" max_amount="18"/><chemical_analysis_oxides chemical_analysis_id="5" oxide_id="1" amount="13.0" measurement_unit="ppm" min_amount="11" max_amount="15"></chemical_analysis_oxides> 
     360        <chemical_analysis_oxides chemical_analysis_id="6" oxide_id="6" amount="9" measurement_unit="ppm" min_amount="7" max_amount="11"></chemical_analysis_oxides> 
    361361        <mineral_types mineral_type_id="1" name="Silicates"></mineral_types> 
    362362  <mineral_types mineral_type_id="2" name="Oxides"/> 
  • trunk/mpdb-test-server/test/edu/rpi/metpetdb/server/search/HibernateSearchTest.java

    r530 r531  
    6464                tx.commit(); // index are written at commit time 
    6565        } 
    66  
     66/* 
    6767        @Test 
    6868        public void testTermSearch() { 
     
    449449                        } 
    450450                } 
    451         } 
     451        }*/ 
    452452        @Test 
    453453        public void testOxideRangeSearch() { 
     
    480480                                                final BooleanQuery setQuery = new BooleanQuery(); 
    481481                                                for (SearchOxide o : (Set<SearchOxide>) methodResult) { 
    482                                                         final RangeQuery surroundMin = new RangeQuery( 
    483                                                                         new Term( 
    484                                                                                         "subsample_chemicalAnalysis_oxides_minAmount", 
    485                                                                                         NumberUtils.float2sortableStr(o 
    486                                                                                                         .getLowerBound())), 
    487                                                                         new Term( 
    488                                                                                         "subsample_chemicalAnalysis_oxides_minAmount", 
    489                                                                                         NumberUtils.float2sortableStr(o 
    490                                                                                                         .getUpperBound())), true); 
    491                                                         final RangeQuery surroundMax = new RangeQuery( 
    492                                                                         new Term( 
    493                                                                                         "subsample_chemicalAnalysis_oxides_maxAmount", 
    494                                                                                         NumberUtils.float2sortableStr(o 
    495                                                                                                         .getLowerBound())), 
    496                                                                         new Term( 
    497                                                                                         "subsample_chemicalAnalysis_oxides_maxAmount", 
    498                                                                                         NumberUtils.float2sortableStr(o 
    499                                                                                                         .getUpperBound())), true); 
    500                                                         final RangeQuery minBelowLow = new RangeQuery( 
    501                                                                         new Term( 
    502                                                                                         "subsample_chemicalAnalysis_oxides_minAmount", 
    503                                                                                         NumberUtils.float2sortableStr(0)), 
    504                                                                         new Term( 
    505                                                                                         "subsample_chemicalAnalysis_oxides_minAmount", 
    506                                                                                         NumberUtils.float2sortableStr(o 
    507                                                                                                         .getLowerBound())), true); 
    508                                                         final RangeQuery maxAboveHigh = new RangeQuery( 
    509                                                                         new Term( 
    510                                                                                         "subsample_chemicalAnalysis_oxides_maxAmount", 
    511                                                                                         NumberUtils.float2sortableStr(o 
    512                                                                                                         .getUpperBound())), 
    513                                                                         new Term( 
    514                                                                                         "subsample_chemicalAnalysis_oxides_minAmount", 
    515                                                                                         NumberUtils.float2sortableStr(9999)), 
    516                                                                         true); 
    517                                                         final BooleanQuery minMaxSurroundingLowHigh = new BooleanQuery(); 
    518                                                         minMaxSurroundingLowHigh.add(minBelowLow, 
    519                                                                         BooleanClause.Occur.MUST); 
    520                                                         minMaxSurroundingLowHigh.add(maxAboveHigh, 
    521                                                                         BooleanClause.Occur.MUST); 
    522                                                         final BooleanQuery rangeSearches = new BooleanQuery(); 
    523                                                         rangeSearches.add(surroundMin, 
    524                                                                         BooleanClause.Occur.SHOULD); 
    525                                                         rangeSearches.add(surroundMax, 
    526                                                                         BooleanClause.Occur.SHOULD); 
    527                                                         rangeSearches.add(minMaxSurroundingLowHigh, 
    528                                                                         BooleanClause.Occur.SHOULD); 
    529                                                          
    530                                                         final TermQuery oxideQuery = new TermQuery( 
    531                                                                         new Term( 
    532                                                                                         "subsample_chemicalAnalysis_oxides_oxide_species", 
    533                                                                                         o.getSpecies())); 
    534                                                         final BooleanQuery oxideSetQuery = new BooleanQuery(); 
    535                                                         oxideSetQuery.add(rangeSearches, BooleanClause.Occur.MUST); 
    536                                                         oxideSetQuery.add(oxideQuery, BooleanClause.Occur.MUST); 
    537                                                         setQuery.add(oxideSetQuery, BooleanClause.Occur.SHOULD); 
     482                                                        final RangeFilter rangeFilterOnMin = new RangeFilter("subsample_chemicalAnalysis_oxides_minAmount", NumberUtils.float2sortableStr(-99999), NumberUtils.float2sortableStr(o 
     483                                                                        .getUpperBound()),true, true); 
     484                                                        final RangeFilter rangeFilterOnMax = new RangeFilter("subsample_chemicalAnalysis_oxides_minAmount", NumberUtils.float2sortableStr(o 
     485                                                                        .getLowerBound()), NumberUtils.float2sortableStr(99999),true, true); 
     486                                                        final TermQuery oxideQuery = new TermQuery(new Term("subsample_chemicalAnalysis_oxides_oxide_species",                                                  o.getSpecies())); 
     487                                                        final FilteredQuery filterOnMinQuery = new FilteredQuery(oxideQuery, rangeFilterOnMin); 
     488                                                        final FilteredQuery filterOnBothQuery = new FilteredQuery(filterOnMinQuery, rangeFilterOnMax); 
     489                                                        setQuery.add(filterOnBothQuery, BooleanClause.Occur.SHOULD); 
    538490                                                } 
    539491                                                // require that one of these results be found in the 
     
    675627                                                final BooleanQuery setQuery = new BooleanQuery(); 
    676628                                                for (SearchElement o : (Set<SearchElement>) methodResult) { 
    677                                                         final RangeQuery surroundMin = new RangeQuery( 
    678                                                                         new Term( 
    679                                                                                         "subsample_chemicalAnalysis_elements_minAmount", 
    680                                                                                         NumberUtils.float2sortableStr(o 
    681                                                                                                         .getLowerBound())), 
    682                                                                         new Term( 
    683                                                                                         "subsample_chemicalAnalysis_elements_minAmount", 
    684                                                                                         NumberUtils.float2sortableStr(o 
    685                                                                                                         .getUpperBound())), true); 
    686                                                         final RangeQuery surroundMax = new RangeQuery( 
    687                                                                         new Term( 
    688                                                                                         "subsample_chemicalAnalysis_elements_maxAmount", 
    689                                                                                         NumberUtils.float2sortableStr(o 
    690                                                                                                         .getLowerBound())), 
    691                                                                         new Term( 
    692                                                                                         "subsample_chemicalAnalysis_elements_maxAmount", 
    693                                                                                         NumberUtils.float2sortableStr(o 
    694                                                                                                         .getUpperBound())), true); 
    695                                                         final RangeQuery minBelowLow = new RangeQuery( 
    696                                                                         new Term( 
    697                                                                                         "subsample_chemicalAnalysis_elements_minAmount", 
    698                                                                                         NumberUtils.float2sortableStr(0)), 
    699                                                                         new Term( 
    700                                                                                         "subsample_chemicalAnalysis_elements_minAmount", 
    701                                                                                         NumberUtils.float2sortableStr(o 
    702                                                                                                         .getLowerBound())), true); 
    703                                                         final RangeQuery maxAboveHigh = new RangeQuery( 
    704                                                                         new Term( 
    705                                                                                         "subsample_chemicalAnalysis_elements_maxAmount", 
    706                                                                                         NumberUtils.float2sortableStr(o 
    707                                                                                                         .getUpperBound())), 
    708                                                                         new Term( 
    709                                                                                         "subsample_chemicalAnalysis_elements_minAmount", 
    710                                                                                         NumberUtils.float2sortableStr(9999)), 
    711                                                                         true); 
    712                                                         final BooleanQuery minMaxSurroundingLowHigh = new BooleanQuery(); 
    713                                                         minMaxSurroundingLowHigh.add(minBelowLow, 
    714                                                                         BooleanClause.Occur.MUST); 
    715                                                         minMaxSurroundingLowHigh.add(maxAboveHigh, 
    716                                                                         BooleanClause.Occur.MUST); 
    717                                                         final BooleanQuery rangeSearches = new BooleanQuery(); 
    718                                                         rangeSearches.add(surroundMin, 
    719                                                                         BooleanClause.Occur.SHOULD); 
    720                                                         rangeSearches.add(surroundMax, 
    721                                                                         BooleanClause.Occur.SHOULD); 
    722                                                         rangeSearches.add(minMaxSurroundingLowHigh, 
    723                                                                         BooleanClause.Occur.SHOULD); 
    724                                                          
     629                                                        final RangeFilter rangeFilterOnMin = new RangeFilter("subsample_chemicalAnalysis_elements_minAmount", NumberUtils.float2sortableStr(-99999), NumberUtils.float2sortableStr(o 
     630                                                                        .getUpperBound()),true, true); 
     631                                                        final RangeFilter rangeFilterOnMax = new RangeFilter("subsample_chemicalAnalysis_elements_minAmount", NumberUtils.float2sortableStr(o 
     632                                                                        .getLowerBound()), NumberUtils.float2sortableStr(99999),true, true); 
    725633                                                        final TermQuery elementQuery = new TermQuery( 
    726634                                                                        new Term( 
    727635                                                                                        "subsample_chemicalAnalysis_elements_element_symbol", 
    728636                                                                                        o.getElementSymbol())); 
    729                                                         final BooleanQuery elementSetQuery = new BooleanQuery(); 
    730                                                         elementSetQuery.add(rangeSearches, BooleanClause.Occur.MUST); 
    731                                                         elementSetQuery.add(elementQuery, BooleanClause.Occur.MUST); 
    732                                                         setQuery.add(elementSetQuery, BooleanClause.Occur.SHOULD); 
     637                                                        final FilteredQuery filterOnMinQuery = new FilteredQuery(elementQuery, rangeFilterOnMin); 
     638                                                        final FilteredQuery filterOnBothQuery = new FilteredQuery(filterOnMinQuery, rangeFilterOnMax); 
     639                                                        setQuery.add(filterOnBothQuery, BooleanClause.Occur.SHOULD); 
    733640                                                } 
    734641                                                // require that one of these results be found in the 
     
    750657 
    751658        } 
    752  
     659/* 
    753660        @Test 
    754661        public void testSampleSearch() { 
     
    763670                final SearchSample searchSamp = new SearchSample(); 
    764671                // searchSamp.setAlias("1"); 
    765 /*              final RockType rockType1 = new RockType(); 
     672                final RockType rockType1 = new RockType(); 
    766673                rockType1.setRockType("type 2"); 
    767674                final RockType rockType2 = new RockType(); 
     
    769676                searchSamp.addPossibleRockType(rockType1); 
    770677                searchSamp.addPossibleRockType(rockType2); 
    771 */              Oxide tempOxide = new Oxide(); 
     678                Oxide tempOxide = new Oxide(); 
    772679                tempOxide.setSpecies("al2o3"); 
    773680                searchSamp.addOxide(tempOxide, 9f, 17f); 
    774681 
    775                 /* 
    776                  * final Calendar rightNow = Calendar.getInstance(); rightNow.set(2008, 
    777                  * 7, 25); final Date firstDate = rightNow.getTime(); rightNow.set(2008, 
    778                  * 8, 1); final Date secondDate = rightNow.getTime(); 
    779                  *  
    780                  * searchSamp.setCollectionDateRange(new DateSpan(firstDate, 
    781                  * secondDate)); 
    782                  */ 
     682                 
     683                  final Calendar rightNow = Calendar.getInstance(); rightNow.set(2008, 
     684                  7, 25); final Date firstDate = rightNow.getTime(); rightNow.set(2008, 
     685                  8, 1); final Date secondDate = rightNow.getTime(); 
     686                   
     687                  searchSamp.setCollectionDateRange(new DateSpan(firstDate, 
     688                  secondDate)); 
     689                  
    783690                // Actual Search Functionality 
    784691                final Session session = InitDatabase.getSession(); 
     
    789696                BooleanQuery fullQuery = new BooleanQuery(); 
    790697 
    791                 /* 
    792                  * // Check if it's public data or if the user is this user BooleanQuery 
    793                  * privacyQuery = new BooleanQuery(); // Is this public data? final 
    794                  * TermQuery termQuery = new TermQuery(new Term("publicData", 
    795                  * Boolean.TRUE.toString())); privacyQuery.add(termQuery, 
    796                  * BooleanClause.Occur.SHOULD); // Is this the current user? final 
    797                  * TermQuery termQuery2 = new TermQuery(new Term( "user_emailAddress", 
    798                  * testUser.getEmailAddress())); privacyQuery.add(termQuery2, 
    799                  * BooleanClause.Occur.SHOULD); 
    800                  *  
    801                  * // in the full query, make it mandatory that the privacy requirements 
    802                  * // are met fullQuery.add(privacyQuery, BooleanClause.Occur.MUST); 
    803                  */ 
     698                 
     699                  // Check if it's public data or if the user is this user BooleanQuery 
     700                  privacyQuery = new BooleanQuery(); // Is this public data? final 
     701                  TermQuery termQuery = new TermQuery(new Term("publicData", 
     702                  Boolean.TRUE.toString())); privacyQuery.add(termQuery, 
     703                  BooleanClause.Occur.SHOULD); // Is this the current user? final 
     704                  TermQuery termQuery2 = new TermQuery(new Term( "user_emailAddress", 
     705                  testUser.getEmailAddress())); privacyQuery.add(termQuery2, 
     706                  BooleanClause.Occur.SHOULD); 
     707                   
     708                  // in the full query, make it mandatory that the privacy requirements 
     709                  // are met fullQuery.add(privacyQuery, BooleanClause.Occur.MUST); 
     710                  
    804711                // Actual Search 
    805712                String columnName; 
     
    938845                assertEquals(1, results.size()); 
    939846        } 
    940  
     847*/ 
    941848}