simple_solr_client 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +349 -0
  5. data/Rakefile +11 -0
  6. data/lib/simple_solr.rb +42 -0
  7. data/lib/simple_solr/client.rb +139 -0
  8. data/lib/simple_solr/client/core_admin.rb +0 -0
  9. data/lib/simple_solr/core.rb +50 -0
  10. data/lib/simple_solr/core/admin.rb +47 -0
  11. data/lib/simple_solr/core/core_data.rb +51 -0
  12. data/lib/simple_solr/core/index.rb +25 -0
  13. data/lib/simple_solr/core/search.rb +21 -0
  14. data/lib/simple_solr/response/document.rb +45 -0
  15. data/lib/simple_solr/response/generic_response.rb +19 -0
  16. data/lib/simple_solr/response/query_response.rb +54 -0
  17. data/lib/simple_solr/schema.rb +261 -0
  18. data/lib/simple_solr/schema/analysis.rb +58 -0
  19. data/lib/simple_solr/schema/copyfield.rb +42 -0
  20. data/lib/simple_solr/schema/dynamic_field.rb +23 -0
  21. data/lib/simple_solr/schema/field.rb +35 -0
  22. data/lib/simple_solr/schema/field_or_type.rb +112 -0
  23. data/lib/simple_solr/schema/field_type.rb +62 -0
  24. data/lib/simple_solr/schema/matcher.rb +16 -0
  25. data/lib/simple_solr/version.rb +3 -0
  26. data/simple_solr_client.gemspec +39 -0
  27. data/solr_sample_core/conf/_schema_analysis_stopwords_english.json +38 -0
  28. data/solr_sample_core/conf/_schema_analysis_synonyms_english.json +11 -0
  29. data/solr_sample_core/conf/admin-extra.html +24 -0
  30. data/solr_sample_core/conf/admin-extra.menu-bottom.html +25 -0
  31. data/solr_sample_core/conf/admin-extra.menu-top.html +25 -0
  32. data/solr_sample_core/conf/clustering/carrot2/kmeans-attributes.xml +19 -0
  33. data/solr_sample_core/conf/clustering/carrot2/lingo-attributes.xml +24 -0
  34. data/solr_sample_core/conf/clustering/carrot2/stc-attributes.xml +19 -0
  35. data/solr_sample_core/conf/currency.xml +67 -0
  36. data/solr_sample_core/conf/elevate.xml +38 -0
  37. data/solr_sample_core/conf/lang/contractions_ca.txt +8 -0
  38. data/solr_sample_core/conf/lang/contractions_fr.txt +15 -0
  39. data/solr_sample_core/conf/lang/contractions_ga.txt +5 -0
  40. data/solr_sample_core/conf/lang/contractions_it.txt +23 -0
  41. data/solr_sample_core/conf/lang/hyphenations_ga.txt +5 -0
  42. data/solr_sample_core/conf/lang/stemdict_nl.txt +6 -0
  43. data/solr_sample_core/conf/lang/stoptags_ja.txt +420 -0
  44. data/solr_sample_core/conf/lang/stopwords_ar.txt +125 -0
  45. data/solr_sample_core/conf/lang/stopwords_bg.txt +193 -0
  46. data/solr_sample_core/conf/lang/stopwords_ca.txt +220 -0
  47. data/solr_sample_core/conf/lang/stopwords_ckb.txt +136 -0
  48. data/solr_sample_core/conf/lang/stopwords_cz.txt +172 -0
  49. data/solr_sample_core/conf/lang/stopwords_da.txt +110 -0
  50. data/solr_sample_core/conf/lang/stopwords_de.txt +294 -0
  51. data/solr_sample_core/conf/lang/stopwords_el.txt +78 -0
  52. data/solr_sample_core/conf/lang/stopwords_en.txt +54 -0
  53. data/solr_sample_core/conf/lang/stopwords_es.txt +356 -0
  54. data/solr_sample_core/conf/lang/stopwords_eu.txt +99 -0
  55. data/solr_sample_core/conf/lang/stopwords_fa.txt +313 -0
  56. data/solr_sample_core/conf/lang/stopwords_fi.txt +97 -0
  57. data/solr_sample_core/conf/lang/stopwords_fr.txt +186 -0
  58. data/solr_sample_core/conf/lang/stopwords_ga.txt +110 -0
  59. data/solr_sample_core/conf/lang/stopwords_gl.txt +161 -0
  60. data/solr_sample_core/conf/lang/stopwords_hi.txt +235 -0
  61. data/solr_sample_core/conf/lang/stopwords_hu.txt +211 -0
  62. data/solr_sample_core/conf/lang/stopwords_hy.txt +46 -0
  63. data/solr_sample_core/conf/lang/stopwords_id.txt +359 -0
  64. data/solr_sample_core/conf/lang/stopwords_it.txt +303 -0
  65. data/solr_sample_core/conf/lang/stopwords_ja.txt +127 -0
  66. data/solr_sample_core/conf/lang/stopwords_lv.txt +172 -0
  67. data/solr_sample_core/conf/lang/stopwords_nl.txt +119 -0
  68. data/solr_sample_core/conf/lang/stopwords_no.txt +194 -0
  69. data/solr_sample_core/conf/lang/stopwords_pt.txt +253 -0
  70. data/solr_sample_core/conf/lang/stopwords_ro.txt +233 -0
  71. data/solr_sample_core/conf/lang/stopwords_ru.txt +243 -0
  72. data/solr_sample_core/conf/lang/stopwords_sv.txt +133 -0
  73. data/solr_sample_core/conf/lang/stopwords_th.txt +119 -0
  74. data/solr_sample_core/conf/lang/stopwords_tr.txt +212 -0
  75. data/solr_sample_core/conf/lang/userdict_ja.txt +29 -0
  76. data/solr_sample_core/conf/mapping-FoldToASCII.txt +3813 -0
  77. data/solr_sample_core/conf/mapping-ISOLatin1Accent.txt +246 -0
  78. data/solr_sample_core/conf/protwords.txt +21 -0
  79. data/solr_sample_core/conf/schema.xml +62 -0
  80. data/solr_sample_core/conf/scripts.conf +24 -0
  81. data/solr_sample_core/conf/solrconfig.xml +1702 -0
  82. data/solr_sample_core/conf/spellings.txt +2 -0
  83. data/solr_sample_core/conf/stopwords.txt +14 -0
  84. data/solr_sample_core/conf/syn.txt +0 -0
  85. data/solr_sample_core/conf/synonyms.txt +29 -0
  86. data/solr_sample_core/conf/token_fixing_charfilter.txt +110 -0
  87. data/solr_sample_core/conf/update-script.js +53 -0
  88. data/solr_sample_core/conf/velocity/README.txt +101 -0
  89. data/solr_sample_core/conf/velocity/VM_global_library.vm +175 -0
  90. data/solr_sample_core/conf/velocity/browse.vm +33 -0
  91. data/solr_sample_core/conf/velocity/cluster.vm +19 -0
  92. data/solr_sample_core/conf/velocity/cluster_results.vm +31 -0
  93. data/solr_sample_core/conf/velocity/debug.vm +28 -0
  94. data/solr_sample_core/conf/velocity/did_you_mean.vm +9 -0
  95. data/solr_sample_core/conf/velocity/error.vm +11 -0
  96. data/solr_sample_core/conf/velocity/facet_fields.vm +23 -0
  97. data/solr_sample_core/conf/velocity/facet_pivot.vm +12 -0
  98. data/solr_sample_core/conf/velocity/facet_queries.vm +12 -0
  99. data/solr_sample_core/conf/velocity/facet_ranges.vm +23 -0
  100. data/solr_sample_core/conf/velocity/facets.vm +10 -0
  101. data/solr_sample_core/conf/velocity/footer.vm +43 -0
  102. data/solr_sample_core/conf/velocity/head.vm +35 -0
  103. data/solr_sample_core/conf/velocity/header.vm +7 -0
  104. data/solr_sample_core/conf/velocity/hit.vm +25 -0
  105. data/solr_sample_core/conf/velocity/hit_grouped.vm +43 -0
  106. data/solr_sample_core/conf/velocity/hit_plain.vm +25 -0
  107. data/solr_sample_core/conf/velocity/join_doc.vm +20 -0
  108. data/solr_sample_core/conf/velocity/jquery.autocomplete.css +48 -0
  109. data/solr_sample_core/conf/velocity/jquery.autocomplete.js +763 -0
  110. data/solr_sample_core/conf/velocity/layout.vm +24 -0
  111. data/solr_sample_core/conf/velocity/main.css +230 -0
  112. data/solr_sample_core/conf/velocity/mime_type_lists.vm +68 -0
  113. data/solr_sample_core/conf/velocity/pagination_bottom.vm +22 -0
  114. data/solr_sample_core/conf/velocity/pagination_top.vm +29 -0
  115. data/solr_sample_core/conf/velocity/product_doc.vm +32 -0
  116. data/solr_sample_core/conf/velocity/query.vm +42 -0
  117. data/solr_sample_core/conf/velocity/query_form.vm +64 -0
  118. data/solr_sample_core/conf/velocity/query_group.vm +43 -0
  119. data/solr_sample_core/conf/velocity/query_spatial.vm +75 -0
  120. data/solr_sample_core/conf/velocity/results_list.vm +22 -0
  121. data/solr_sample_core/conf/velocity/richtext_doc.vm +153 -0
  122. data/solr_sample_core/conf/velocity/suggest.vm +8 -0
  123. data/solr_sample_core/conf/velocity/tabs.vm +50 -0
  124. data/solr_sample_core/conf/xslt/example.xsl +132 -0
  125. data/solr_sample_core/conf/xslt/example_atom.xsl +67 -0
  126. data/solr_sample_core/conf/xslt/example_rss.xsl +66 -0
  127. data/solr_sample_core/conf/xslt/luke.xsl +337 -0
  128. data/solr_sample_core/conf/xslt/updateXml.xsl +70 -0
  129. data/spec/client_basics_spec.rb +26 -0
  130. data/spec/connect_spec.rb +25 -0
  131. data/spec/core_basics.rb +21 -0
  132. data/spec/index_spec.rb +31 -0
  133. data/spec/load_spec.rb +7 -0
  134. data/spec/minitest_helper.rb +36 -0
  135. data/spec/schema_spec.rb +113 -0
  136. metadata +284 -0
@@ -0,0 +1,33 @@
1
+ #**
2
+ * Main entry point into the /browse templates
3
+ *#
4
+
5
+ #set($searcher = $request.searcher)
6
+ #set($params = $request.params)
7
+ #set($clusters = $response.response.clusters)
8
+ #set($mltResults = $response.response.get("moreLikeThis"))
9
+ #set($annotate = $params.get("annotateBrowse"))
10
+ #parse('query_form.vm')
11
+ #parse('did_you_mean.vm')
12
+
13
+ <div class="navigators">
14
+ #parse("facets.vm")
15
+ </div>
16
+
17
+ <div class="pagination">
18
+ #parse("pagination_top.vm")
19
+ </div>
20
+
21
+ ## Show Error Message, if any
22
+ <div class="error">
23
+ #parse("error.vm")
24
+ </div>
25
+
26
+ ## Render Results, actual matching docs
27
+ <div class="results">
28
+ #parse("results_list.vm")
29
+ </div>
30
+
31
+ <div class="pagination">
32
+ #parse("pagination_bottom.vm")
33
+ </div>
@@ -0,0 +1,19 @@
1
+ #**
2
+ * Check if Clustering is Enabled and then
3
+ * call cluster_results.vm
4
+ *#
5
+
6
+ <h2 #annTitle("Clusters generated by Carrot2 using the /clustering RequestHandler")>
7
+ Clusters
8
+ </h2>
9
+
10
+ ## Div tag has placeholder text by default
11
+ <div id="clusters">
12
+ Run Solr with java -Dsolr.clustering.enabled=true -jar start.jar to see clustered search results.
13
+ </div>
14
+
15
+ ## Replace the div content *if* Carrot^2 is available
16
+ <script type="text/javascript">
17
+ $('#clusters').load("#url_for_solr/clustering#lens",
18
+ {'wt':'velocity', 'v.template':"cluster_results"});
19
+ </script>
@@ -0,0 +1,31 @@
1
+ #**
2
+ * Actual rendering of Clusters
3
+ *#
4
+
5
+ ## For each cluster
6
+ #foreach ($clusters in $response.response.clusters)
7
+
8
+ #set($labels = $clusters.get('labels'))
9
+ #set($docs = $clusters.get('docs'))
10
+
11
+ ## This Cluster's Heading
12
+ <h3>
13
+ #foreach ($label in $labels)
14
+ ## Keep the following line together to prevent
15
+ ## a space appearing before each comma
16
+ $label#if( $foreach.hasNext ),#end
17
+ #end
18
+ </h3>
19
+
20
+ ## This Cluster's Documents
21
+ <ol>
22
+ ## For each doc in this cluster
23
+ #foreach ($cluDoc in $docs)
24
+ <li>
25
+ <a href="#url_for_home?q=id:$cluDoc">
26
+ $cluDoc</a>
27
+ </li>
28
+ #end
29
+ </ol>
30
+
31
+ #end ## end for each Cluster
@@ -0,0 +1,28 @@
1
+ #**
2
+ * Show Debugging Information, if enabled
3
+ *#
4
+
5
+ #if( $params.getBool("debugQuery",false) )
6
+ <a href="#" onclick='jQuery(this).siblings("pre").toggle(); return false;'>
7
+ toggle explain</a>
8
+
9
+ <pre style="display:none">
10
+ $response.getExplainMap().get($doc.getFirstValue('id'))
11
+ </pre>
12
+
13
+ <a href="#" onclick='jQuery(this).siblings("pre2").toggle(); return false;'>
14
+ toggle all fields</a>
15
+
16
+ <pre2 style="display:none">
17
+ #foreach($fieldname in $doc.fieldNames)
18
+ <br>
19
+ <span class="field-name">$fieldname :</span>
20
+ <span>
21
+ #foreach($value in $doc.getFieldValues($fieldname))
22
+ $esc.html($value)
23
+ #end
24
+ </span>
25
+ </br>
26
+ #end
27
+ </pre2>
28
+ #end
@@ -0,0 +1,9 @@
1
+ #**
2
+ * Hyperlinked spelling suggestions in results list
3
+ *#
4
+
5
+ #set($dym = $response.response.spellcheck.suggestions.collation.collationQuery)
6
+ #if($dym)
7
+ Did you mean
8
+ <a href="#{url_for_home}#{lensNoQ}&q=$esc.url($dym)">$esc.html($dym)</a>?
9
+ #end
@@ -0,0 +1,11 @@
1
+ #**
2
+ * Show Error Message, if any
3
+ *#
4
+
5
+ ## Show Error Message, if any
6
+ ## Usually rendered inside div class=error
7
+
8
+ #if( $response.response.error.code )
9
+ <h1>ERROR $response.response.error.code</h1>
10
+ $response.response.error.msg
11
+ #end
@@ -0,0 +1,23 @@
1
+ #**
2
+ * Display facets based on field values
3
+ * e.g.: fields specified by &facet.field=
4
+ *#
5
+
6
+ #if($response.facetFields)
7
+ <h2 #annTitle("Facets generated by adding &facet.field= to the request")>
8
+ Field Facets
9
+ </h2>
10
+ #foreach($field in $response.facetFields)
11
+ ## Hide facets without value
12
+ #if($field.values.size() > 0)
13
+ <span class="facet-field">$field.name</span>
14
+ <ul>
15
+ #foreach($facet in $field.values)
16
+ <li>
17
+ <a href="#url_for_facet_filter($field.name, $facet.name)">$facet.name</a> ($facet.count)
18
+ </li>
19
+ #end
20
+ </ul>
21
+ #end ## end if > 0
22
+ #end ## end for each facet field
23
+ #end ## end if response has facet fields
@@ -0,0 +1,12 @@
1
+ #**
2
+ * Display Pivot-Based Facets
3
+ * e.g.: facets specified by &facet.pivot=
4
+ *#
5
+
6
+ <h2 #annTitle("Facets generated by adding &facet.pivot= to the request")>
7
+ Pivot Facets
8
+ </h2>
9
+
10
+ #set($pivot = $response.response.facet_counts.facet_pivot)
11
+
12
+ #display_facet_pivot($pivot, "")
@@ -0,0 +1,12 @@
1
+ #**
2
+ * Display facets based on specific facet queries
3
+ * e.g.: facets specified by &facet.query=
4
+ *#
5
+
6
+ #set($field = $response.response.facet_counts.facet_queries)
7
+
8
+ <h2 #annTitle("Facets generated by adding &facet.query= to the request")>
9
+ Query Facets
10
+ </h2>
11
+
12
+ #display_facet_query($field, "", "")
@@ -0,0 +1,23 @@
1
+ #**
2
+ * Display facets based on ranges of values, AKA "Bukets"
3
+ * e.g.: ranges specified by &facet.range=
4
+ *#
5
+
6
+ <h2 #annTitle("Facets generated by adding &facet.range= to the request")>
7
+ Range Facets
8
+ </h2>
9
+
10
+ #foreach ($field in $response.response.facet_counts.facet_ranges)
11
+ ## Hide facets without value
12
+ #if($field.value.counts.size() > 0)
13
+ #set($name = $field.key)
14
+ #set($display = $name)
15
+ #set($f = $field.value.counts)
16
+ #set($start = $field.value.start)
17
+ #set($end = $field.value.end)
18
+ #set($gap = $field.value.gap)
19
+ #set($before = $field.value.before)
20
+ #set($after = $field.value.after)
21
+ #display_facet_range($f, $display, $name, $start, $end, $gap, $before, $after)
22
+ #end ## end if has any values
23
+ #end ## end for each facet range
@@ -0,0 +1,10 @@
1
+ #**
2
+ * Overall Facet display block
3
+ * Invokes the 4 facet and 1 cluster template
4
+ *#
5
+
6
+ #parse('facet_fields.vm')
7
+ #parse('facet_queries.vm')
8
+ #parse('facet_ranges.vm')
9
+ #parse('facet_pivot.vm')
10
+ #parse('cluster.vm')
@@ -0,0 +1,43 @@
1
+ #**
2
+ * Render the bottom section of the page visible to users
3
+ *#
4
+
5
+ <hr/>
6
+ <div>
7
+ <span>Options:</span>
8
+
9
+ #if($request.params.get('debugQuery'))
10
+ <a href="#url_for_home?#q#if($list.size($request.params.getParams('fq')) > 0)&#fqs($request.params.getParams('fq'))#end">
11
+ disable debug</a>
12
+ #else
13
+ <a href="#url_for_lens&debugQuery=true&fl=*,score">
14
+ enable debug</a>
15
+ #end
16
+ -
17
+ #if($annotate)
18
+ <a href="#url_for_home?#q#if($list.size($request.params.getParams('fq')) > 0)&#fqs($request.params.getParams('fq'))#end#boostPrice">
19
+ disable annotation</a>
20
+ #else
21
+ <a href="#url_for_lens&annotateBrowse=true">
22
+ enable annotation</a>
23
+ #end
24
+ -
25
+ <a #annTitle("Click to switch to an XML response: &wt=xml") href="#url_for_lens&wt=xml#if($request.params.get('debugQuery'))&debugQuery=true#end">
26
+ XML results</a>
27
+
28
+ </div>
29
+
30
+ <div>
31
+ Generated by <a href="http://wiki.apache.org/solr/VelocityResponseWriter">VelocityResponseWriter</a>
32
+ </div>
33
+ <div>
34
+ <span>Documentation: </span>
35
+ <a href="http://lucene.apache.org/solr">Solr Home Page</a>, <a href="http://wiki.apache.org/solr">
36
+ Solr Wiki</a>
37
+ </div>
38
+ <div>
39
+ Disclaimer:
40
+ The locations displayed in this demonstration are purely fictional.
41
+ It is more than likely that no store with the items listed actually
42
+ exists at that location!
43
+ </div>
@@ -0,0 +1,35 @@
1
+ #**
2
+ * Provide elements for the <head> section of the HTML document
3
+ *#
4
+
5
+ ## An example of using an arbitrary request parameter
6
+ <title>#param('title')</title>
7
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
8
+
9
+ <script type="text/javascript" src="#{url_root}/js/lib/jquery-1.7.2.min.js"></script>
10
+ <link rel="stylesheet" type="text/css" href="#{url_for_solr}/admin/file?file=/velocity/main.css&contentType=text/css"/>
11
+ <link rel="stylesheet" href="#{url_for_solr}/admin/file?file=/velocity/jquery.autocomplete.css&contentType=text/css" type="text/css" />
12
+ <script type="text/javascript" src="#{url_for_solr}/admin/file?file=/velocity/jquery.autocomplete.js&contentType=text/javascript"></script>
13
+
14
+
15
+ <script>
16
+ $(document).ready(function(){
17
+ $("\#q").autocomplete('#{url_for_solr}/terms', { ## backslash escaped #q as that is a macro defined in VM_global_library.vm
18
+ extraParams:{
19
+ 'terms.prefix': function() { return $("\#q").val();},
20
+ 'terms.sort': 'count',
21
+ 'terms.fl': 'name',
22
+ 'wt': 'velocity',
23
+ 'v.template': 'suggest'
24
+ }
25
+ }
26
+ ).keydown(function(e){
27
+ if (e.keyCode === 13){
28
+ $("#query-form").trigger('submit');
29
+ }
30
+ });
31
+
32
+ // http://localhost:8983/solr/collection1/terms?terms.fl=name&terms.prefix=i&terms.sort=count&wt=velocity&v.template=suggest
33
+ });
34
+
35
+ </script>
@@ -0,0 +1,7 @@
1
+ #**
2
+ * Render the top section of the page visible to users
3
+ *#
4
+
5
+ <div id="head">
6
+ <span ><a href="#url_for_home#if($request.params.get('debugQuery'))?debugQuery=true#end"><img src="#{url_root}/img/solr.png" id="logo"/></a></span>
7
+ </div>
@@ -0,0 +1,25 @@
1
+ #**
2
+ * Called for each matching document but then
3
+ * calls one of product_doc, join_doc or richtext_doc
4
+ * depending on which fields the doc has
5
+ *#
6
+
7
+ #set($docId = $doc.getFieldValue('id'))
8
+
9
+ <div class="result-document">
10
+
11
+ ## Has a "name" field ?
12
+ #if($doc.getFieldValue('name'))
13
+ #parse("product_doc.vm")
14
+
15
+ ## Has a "compName_s" field ?
16
+ #elseif($doc.getFieldValue('compName_s'))
17
+ #parse("join_doc.vm")
18
+
19
+ ## Fallback to richtext_doc
20
+ #else
21
+ #parse("richtext_doc.vm")
22
+
23
+ #end
24
+
25
+ </div>
@@ -0,0 +1,43 @@
1
+ #**
2
+ * Display grouped results
3
+ *#
4
+
5
+ <div class="result-document">
6
+
7
+ <div class="result-title">
8
+ <b>$grouping.key</b>
9
+ </div>
10
+
11
+ <div>
12
+ Total Matches in Group: $grouping.value.matches
13
+ </div>
14
+
15
+ <div> ## list of groups
16
+
17
+ #foreach ($group in $grouping.value.groups)
18
+ <div class="group-value">
19
+ #if($group.groupValue)$group.groupValue#{else}<i>No group</i>#end
20
+ <span #annTitle("The count of the number of documents in this group")>
21
+ ($group.doclist.numFound)
22
+ </span>
23
+ </div>
24
+
25
+ <div class="group-doclist"
26
+ #annTitle("Contains the top scoring documents in the group")
27
+ >
28
+ #foreach ($doc in $group.doclist)
29
+ #set($docId = $doc.getFieldValue('id'))
30
+ #if($doc.getFieldValue('name'))
31
+ #parse("product_doc.vm")
32
+ #elseif($doc.getFieldValue('compName_s'))
33
+ #parse("join_doc.vm")
34
+ #else
35
+ #parse("richtext_doc.vm")
36
+ #end
37
+ #end
38
+ </div>
39
+
40
+ #end ## end of foreach group in grouping.value.groups
41
+ </div> ## div tag for entire list of groups
42
+
43
+ </div> ## end of div class=result-document
@@ -0,0 +1,25 @@
1
+ #**
2
+ * An extremely plain / debug version of hit.vm
3
+ *#
4
+
5
+ <table>
6
+ ## For each field
7
+ #foreach( $fieldName in $doc.fieldNames )
8
+ ## For each value
9
+ #foreach( $value in $doc.getFieldValues($fieldName) )
10
+ <tr>
11
+ ## Field Name
12
+ <th align="right" valign="top">
13
+ #if( $foreach.count == 1 )
14
+ $fieldName:
15
+ #end
16
+ </th>
17
+ ## Field Value(s)
18
+ <td align="left" valign="top">
19
+ $esc.html($value) <br/>
20
+ </td>
21
+ </tr>
22
+ #end ## end for each value
23
+ #end ## end for each field
24
+ </table>
25
+ <hr/>
@@ -0,0 +1,20 @@
1
+ #**
2
+ * Display documents that are joined to other documents
3
+ *#
4
+
5
+ <div class="result-title">
6
+ <b>#field('compName_s')</b>
7
+ </div>
8
+
9
+ <div>
10
+ Id: #field('id')
11
+ (company-details document for
12
+ <a href="http://wiki.apache.org/solr/Join" target="_new">join</a>
13
+ )
14
+ </div>
15
+
16
+ <div>
17
+ Address: #field('address_s')
18
+ </div>
19
+
20
+ #parse('debug.vm')
@@ -0,0 +1,48 @@
1
+ .ac_results {
2
+ padding: 0px;
3
+ border: 1px solid black;
4
+ background-color: white;
5
+ overflow: hidden;
6
+ z-index: 99999;
7
+ }
8
+
9
+ .ac_results ul {
10
+ width: 100%;
11
+ list-style-position: outside;
12
+ list-style: none;
13
+ padding: 0;
14
+ margin: 0;
15
+ }
16
+
17
+ .ac_results li {
18
+ margin: 0px;
19
+ padding: 2px 5px;
20
+ cursor: default;
21
+ display: block;
22
+ /*
23
+ if width will be 100% horizontal scrollbar will apear
24
+ when scroll mode will be used
25
+ */
26
+ /*width: 100%;*/
27
+ font: menu;
28
+ font-size: 12px;
29
+ /*
30
+ it is very important, if line-height not setted or setted
31
+ in relative units scroll will be broken in firefox
32
+ */
33
+ line-height: 16px;
34
+ overflow: hidden;
35
+ }
36
+
37
+ .ac_loading {
38
+ background: white url('indicator.gif') right center no-repeat;
39
+ }
40
+
41
+ .ac_odd {
42
+ background-color: #eee;
43
+ }
44
+
45
+ .ac_over {
46
+ background-color: #0A246A;
47
+ color: white;
48
+ }