You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by gs...@apache.org on 2010/10/20 03:16:20 UTC

svn commit: r1024475 - in /lucene/dev/trunk/solr/example/solr/conf: solrconfig.xml velocity/VM_global_library.vm velocity/facet_dates.vm velocity/facet_pivot.vm velocity/facet_queries.vm velocity/facet_ranges.vm velocity/facets.vm velocity/hit.vm

Author: gsingers
Date: Wed Oct 20 01:16:20 2010
New Revision: 1024475

URL: http://svn.apache.org/viewvc?rev=1024475&view=rev
Log:
SOLR-2177: Show more examples of faceting in the browse capability

Added:
    lucene/dev/trunk/solr/example/solr/conf/velocity/facet_dates.vm
    lucene/dev/trunk/solr/example/solr/conf/velocity/facet_pivot.vm
    lucene/dev/trunk/solr/example/solr/conf/velocity/facet_queries.vm
    lucene/dev/trunk/solr/example/solr/conf/velocity/facet_ranges.vm
Modified:
    lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml
    lucene/dev/trunk/solr/example/solr/conf/velocity/VM_global_library.vm
    lucene/dev/trunk/solr/example/solr/conf/velocity/facets.vm
    lucene/dev/trunk/solr/example/solr/conf/velocity/hit.vm

Modified: lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml?rev=1024475&r1=1024474&r2=1024475&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml Wed Oct 20 01:16:20 2010
@@ -524,7 +524,23 @@
        <str name="facet">on</str>
        <str name="facet.field">cat</str>
        <str name="facet.field">manu_exact</str>
+       <str name="facet.query">ipod</str>
+       <str name="facet.query">GB</str>
        <str name="facet.mincount">1</str>
+       <str name="facet.pivot">cat,inStock</str>
+       <str name="facet.range">price</str>
+       <int name="facet.range.start">0</int>
+       <int name="facet.range.end">600</int>
+       <int name="facet.range.gap">50</int>
+       <str name="facet.range.other">after</str>
+       <str name="facet.date">manufacturedate_dt</str>
+       <str name="facet.date.start">NOW/YEAR-10YEARS</str>
+       <str name="facet.date.end">NOW</str>
+       <str name="facet.mincount">1</str>
+       <str name="facet.date.gap">+1YEAR</str>
+       <str name="facet.date.other">before</str>
+       <str name="facet.date.other">after</str>
+
 
        <!-- Highlighting defaults -->
        <str name="hl">on</str>
@@ -541,6 +557,7 @@
      </lst>
      <arr name="last-components">
        <str>spellcheck</str>
+       <str>pivot</str>
      </arr>
      <!--
      <str name="url-scheme">httpx</str>

Modified: lucene/dev/trunk/solr/example/solr/conf/velocity/VM_global_library.vm
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/velocity/VM_global_library.vm?rev=1024475&r1=1024474&r2=1024475&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/solr/conf/velocity/VM_global_library.vm (original)
+++ lucene/dev/trunk/solr/example/solr/conf/velocity/VM_global_library.vm Wed Oct 20 01:16:20 2010
@@ -17,9 +17,16 @@
 
 #macro(url_for_filters $p)#url_for_home?#q#if($list.size($p) > 0)&#fqs($p)#end#debug#end
 
+#macro(url_for_nested_facet_query $field)#url_for_home#lens&fq=$esc.url($field)#end
+
 ## TODO: convert to use {!raw f=$field}$value (with escaping of course)
 #macro(url_for_facet_filter $field $value)#url_for_home#lens&fq=$esc.url($field):%22$esc.url($value)%22#end
 
+#macro(url_for_facet_date_filter $field $value)#url_for_home#lens&fq=$esc.url($field):$esc.url($value)#end
+
+#macro(url_for_facet_range_filter $field $value)#url_for_home#lens&fq=$esc.url($field):$esc.url($value)#end
+
+
 #macro(link_to_previous_page $text)
   #if($page.current_page_number > 1)
     #set($prev_start = $page.start - $page.results_per_page)
@@ -44,3 +51,108 @@
     #end
   #end
 #end
+
+#macro(display_facet_query $field, $display, $fieldName)
+  #if($field.size() > 0)
+  <span class="facet-field">$display</span>
+    <ul>
+    #foreach ($facet in $field)
+      #if ($facet.value > 0)
+        #set($facetURL = "#url_for_nested_facet_query($facet.key)")
+        #if ($facetURL != '')
+          <li><a href="$facetURL">$facet.key</a> ($facet.value)</li>
+        #end
+      #end
+    #end
+    </ul>
+  #end      
+#end
+
+#macro(display_facet_date $field, $display, $fieldName, $gap)
+  <span class="facet-field">$display</span>
+    <ul>
+    #foreach ($facet in $field)
+      #set($theDate = $date.toDate("yyyy-MM-dd'T'HH:mm:ss'Z'", $facet.key))
+      #set($value = '["' + $facet.key + '" TO "' + $facet.key + $gap + '"]')
+
+      #set($facetURL = "#url_for_facet_date_filter($fieldName, $value)")
+      #if ($facetURL != '')
+        #if ($facet.key != "gap" && $facet.key != "start" && $facet.key != "end" && $facet.key != "before" && $facet.key != "after")
+
+          <li><a href="$facetURL">$date.format('MMM yyyy', $theDate)</a> ($facet.value)</li>
+        #end
+        #if ($facet.key == "before" && $facet.value > 0)
+          <li><a href="$facetURL">Before</a> ($facet.value)</li>
+        #end
+        #if ($facet.key == "after" && $facet.value > 0)
+          <li><a href="$facetURL">After</a> ($facet.value)</li>
+        #end
+      #end
+    #end
+    </ul>
+#end
+        
+
+
+#macro(display_facet_range $field, $display, $fieldName, $start, $end, $gap, $before, $after)
+  <span class="facet-field">$display</span>
+    <ul>
+    #if($before && $before != "")
+      #set($value = '[* TO "' + $start + '"]')
+      #set($facetURL = "#url_for_facet_range_filter($fieldName, $value)")
+      <li><a href="$facetURL">Less than $start</a> ($before)</li>
+    #end
+    #foreach ($facet in $field)
+      #set($rangeEnd = $math.add($facet.key, $gap))
+      #set($value = "[" + $facet.key + " TO $rangeEnd]")
+      #set($facetURL = "#url_for_facet_filter($fieldName, $value)")
+      #if ($facetURL != '')
+        <li><a href="$facetURL">$facet.key</a> ($facet.value)</li>
+      #end
+    #end
+    #if($end && $end != "")
+      #set($value = "[" + $end + " TO *]")
+      #set($facetURL = "#url_for_facet_range_filter($fieldName, $value)")
+      <li><a href="$facetURL">More than $math.toNumber($end)</a> ($after)</li>
+    #end
+    </ul>
+#end
+
+##   <lst name="facet_pivot">
+##     <arr name="cat,inStock">
+##       <lst>
+##         <str name="field">cat</str>
+##         <str name="value">electronics</str>
+##         <int name="count">17</int>
+##         <arr name="pivot">
+##           <lst>
+##             <str name="field">inStock</str>
+##             <str name="value">true</str>
+##             <int name="count">13</int>
+##           </lst>
+##           <lst>
+##           <str name="field">inStock</str>
+##             <str name="value">false</str>
+##             <int name="count">4</int>
+##           </lst>
+##         </arr>
+##       </lst>
+
+## $pivots is a list of facet_pivot
+#macro(display_facet_pivot $pivots, $display)
+  #if($pivots.size() > 0)
+  <span class="facet-field">$display</span>
+    <ul>
+      #foreach ($pivot in $pivots)
+        #foreach ($entry in $pivot.value)
+          <a href="#url_for_facet_filter($entry.field, $entry.value)">$entry.field::$entry.value</a> ($entry.count)
+          <ul>
+            #foreach($nest in $entry.pivot)
+              <a href="#url_for_facet_filter($entry.field, $entry.value)&fq=$esc.url($nest.field):%22$esc.url($nest.value)%22">$nest.field::$nest.value</a> ($nest.count)
+            #end
+          </ul>
+        #end
+      #end
+    </ul>
+  #end
+#end
\ No newline at end of file

Added: lucene/dev/trunk/solr/example/solr/conf/velocity/facet_dates.vm
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/velocity/facet_dates.vm?rev=1024475&view=auto
==============================================================================
--- lucene/dev/trunk/solr/example/solr/conf/velocity/facet_dates.vm (added)
+++ lucene/dev/trunk/solr/example/solr/conf/velocity/facet_dates.vm Wed Oct 20 01:16:20 2010
@@ -0,0 +1,4 @@
+##TODO: Generically deal with all dates
+#set($field = $response.response.facet_counts.facet_dates.manufacturedate_dt)
+#set($gap = $response.response.facet_counts.facet_dates.manufacturedate_dt.gap)
+#display_facet_date($field, "Manufacture Date", "manufacturedate_dt", $gap)

Added: lucene/dev/trunk/solr/example/solr/conf/velocity/facet_pivot.vm
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/velocity/facet_pivot.vm?rev=1024475&view=auto
==============================================================================
--- lucene/dev/trunk/solr/example/solr/conf/velocity/facet_pivot.vm (added)
+++ lucene/dev/trunk/solr/example/solr/conf/velocity/facet_pivot.vm Wed Oct 20 01:16:20 2010
@@ -0,0 +1,2 @@
+#set($pivot = $response.response.facet_counts.facet_pivot)
+#display_facet_pivot($pivot, "Pivots")

Added: lucene/dev/trunk/solr/example/solr/conf/velocity/facet_queries.vm
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/velocity/facet_queries.vm?rev=1024475&view=auto
==============================================================================
--- lucene/dev/trunk/solr/example/solr/conf/velocity/facet_queries.vm (added)
+++ lucene/dev/trunk/solr/example/solr/conf/velocity/facet_queries.vm Wed Oct 20 01:16:20 2010
@@ -0,0 +1,2 @@
+#set($field = $response.response.facet_counts.facet_queries)
+#display_facet_query($field, "Facet Queries", "")
\ No newline at end of file

Added: lucene/dev/trunk/solr/example/solr/conf/velocity/facet_ranges.vm
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/velocity/facet_ranges.vm?rev=1024475&view=auto
==============================================================================
--- lucene/dev/trunk/solr/example/solr/conf/velocity/facet_ranges.vm (added)
+++ lucene/dev/trunk/solr/example/solr/conf/velocity/facet_ranges.vm Wed Oct 20 01:16:20 2010
@@ -0,0 +1,9 @@
+#set($field = $response.response.facet_counts.facet_ranges.price.counts)
+#set($start = $response.response.facet_counts.facet_ranges.price.start)
+#set($end = $response.response.facet_counts.facet_ranges.price.end)
+#set($gap = $response.response.facet_counts.facet_ranges.price.gap)
+#set($before = $response.response.facet_counts.facet_ranges.price.before)
+#set($after = $response.response.facet_counts.facet_ranges.price.after)
+##TODO: Make this display the "range", not just the lower value
+##TODO: Have a generic way to deal with ranges
+#display_facet_range($field, "Price (in $)", "price", $start, $end, $gap, $before, $after)

Modified: lucene/dev/trunk/solr/example/solr/conf/velocity/facets.vm
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/velocity/facets.vm?rev=1024475&r1=1024474&r2=1024475&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/solr/conf/velocity/facets.vm (original)
+++ lucene/dev/trunk/solr/example/solr/conf/velocity/facets.vm Wed Oct 20 01:16:20 2010
@@ -10,3 +10,10 @@
       </ul>
     #end
   #end
+#parse('facet_queries.vm')
+#parse('facet_ranges.vm')
+#parse('facet_dates.vm')
+#parse('facet_pivot.vm')
+
+
+

Modified: lucene/dev/trunk/solr/example/solr/conf/velocity/hit.vm
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/velocity/hit.vm?rev=1024475&r1=1024474&r2=1024475&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/solr/conf/velocity/hit.vm (original)
+++ lucene/dev/trunk/solr/example/solr/conf/velocity/hit.vm Wed Oct 20 01:16:20 2010
@@ -8,9 +8,10 @@
   #end
 #end
 <div class="result-document">
-  <p><b>#field('name')</b> $!number.currency($doc.getFieldValue('price'))</p>
-  
-  <p>#field('features')</p>
+  <p><b>#field('name')</b></p>
+  <p>Price: $!number.currency($doc.getFieldValue('price'))</p>
+  <p>Features: #field('features')</p>
+  <p>In Stock: #field('inStock')</p>
   
   #if($params.getBool("debugQuery",false))
     <a href="#" onclick='jQuery(this).siblings("pre").toggle(); return false;'>toggle explain</a>