Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Blur Wiki" for change 
notification.

The "BlurPlatform" page has been changed by AaronMcCurry:
https://wiki.apache.org/blur/BlurPlatform?action=diff&rev1=1&rev2=2

  
  The point is that as a command implementor, you process a BlurIndex (which 
gives you full access to IndexReader/Searcher/Writers); define how results 
should be merged together; and how they should finally be returned.
  
+ Here's a potential client example:
+ {{{
+   public static void main(String[] args) {
+     BlurCommandServerInterface client = getClient("host:port");
+     String query = "field:term";
+     Long result = client.execute(new BlurCommand<Long, Long>(query) {
+       @Override
+       public Long execute(BlurIndex index) throws IOException {
+         IndexSearcherClosable searcher = index.getIndexSearcher();
+         String queryStr = getArgs(0);
+         QueryParser parser = new QueryParser(Version.LUCENE_43, "", new 
StandardAnalyzer(Version.LUCENE_43));
+         Query query;
+         try {
+           query = parser.parse(queryStr);
+         } catch (ParseException e) {
+           throw new IOException(e);
+         }
+         final AtomicLong count = new AtomicLong();
+         searcher.search(query, new Collector() {
+ 
+           @Override
+           public void collect(int doc) throws IOException {
+             count.incrementAndGet();
+           }
+ 
+           @Override
+           public void setScorer(Scorer scorer) throws IOException {
+ 
+           }
+ 
+           @Override
+           public void setNextReader(AtomicReaderContext context) throws 
IOException {
+ 
+           }
+ 
+           @Override
+           public boolean acceptsDocsOutOfOrder() {
+             return false;
+           }
+         });
+         return count.get();
+       }
+ 
+       @Override
+       public Long merge(Map<String, Long> results) throws IOException {
+         long total = 0;
+         for (Entry<String, Long> e : results.entrySet()) {
+           total += e.getValue();
+         }
+         return total;
+       }
+     });
+     System.out.println(result);
+   }
+ 
+ }}}
+ 

Reply via email to