jbasdf-muck-solr 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. data/CHANGE_LOG +239 -0
  2. data/LICENSE +19 -0
  3. data/README.markdown +118 -0
  4. data/README.rdoc +107 -0
  5. data/Rakefile +99 -0
  6. data/TESTING_THE_PLUGIN +25 -0
  7. data/VERSION.yml +4 -0
  8. data/config/solr.yml +15 -0
  9. data/config/solr_environment.rb +32 -0
  10. data/lib/acts_as_solr/acts_methods.rb +352 -0
  11. data/lib/acts_as_solr/class_methods.rb +236 -0
  12. data/lib/acts_as_solr/common_methods.rb +89 -0
  13. data/lib/acts_as_solr/deprecation.rb +61 -0
  14. data/lib/acts_as_solr/instance_methods.rb +165 -0
  15. data/lib/acts_as_solr/lazy_document.rb +18 -0
  16. data/lib/acts_as_solr/parser_methods.rb +203 -0
  17. data/lib/acts_as_solr/search_results.rb +68 -0
  18. data/lib/acts_as_solr/solr_fixtures.rb +13 -0
  19. data/lib/acts_as_solr/tasks/database.rake +16 -0
  20. data/lib/acts_as_solr/tasks/solr.rake +135 -0
  21. data/lib/acts_as_solr/tasks/test.rake +5 -0
  22. data/lib/acts_as_solr/tasks.rb +10 -0
  23. data/lib/acts_as_solr.rb +65 -0
  24. data/lib/solr/connection.rb +177 -0
  25. data/lib/solr/document.rb +75 -0
  26. data/lib/solr/exception.rb +13 -0
  27. data/lib/solr/field.rb +36 -0
  28. data/lib/solr/importer/array_mapper.rb +26 -0
  29. data/lib/solr/importer/delimited_file_source.rb +38 -0
  30. data/lib/solr/importer/hpricot_mapper.rb +27 -0
  31. data/lib/solr/importer/mapper.rb +51 -0
  32. data/lib/solr/importer/solr_source.rb +41 -0
  33. data/lib/solr/importer/xpath_mapper.rb +35 -0
  34. data/lib/solr/importer.rb +19 -0
  35. data/lib/solr/indexer.rb +52 -0
  36. data/lib/solr/request/add_document.rb +58 -0
  37. data/lib/solr/request/base.rb +36 -0
  38. data/lib/solr/request/commit.rb +29 -0
  39. data/lib/solr/request/delete.rb +48 -0
  40. data/lib/solr/request/dismax.rb +46 -0
  41. data/lib/solr/request/index_info.rb +22 -0
  42. data/lib/solr/request/modify_document.rb +46 -0
  43. data/lib/solr/request/optimize.rb +19 -0
  44. data/lib/solr/request/ping.rb +36 -0
  45. data/lib/solr/request/select.rb +54 -0
  46. data/lib/solr/request/spellcheck.rb +30 -0
  47. data/lib/solr/request/standard.rb +402 -0
  48. data/lib/solr/request/update.rb +23 -0
  49. data/lib/solr/request.rb +26 -0
  50. data/lib/solr/response/add_document.rb +17 -0
  51. data/lib/solr/response/base.rb +42 -0
  52. data/lib/solr/response/commit.rb +15 -0
  53. data/lib/solr/response/delete.rb +13 -0
  54. data/lib/solr/response/dismax.rb +8 -0
  55. data/lib/solr/response/index_info.rb +26 -0
  56. data/lib/solr/response/modify_document.rb +17 -0
  57. data/lib/solr/response/optimize.rb +14 -0
  58. data/lib/solr/response/ping.rb +26 -0
  59. data/lib/solr/response/ruby.rb +42 -0
  60. data/lib/solr/response/select.rb +17 -0
  61. data/lib/solr/response/spellcheck.rb +20 -0
  62. data/lib/solr/response/standard.rb +60 -0
  63. data/lib/solr/response/xml.rb +39 -0
  64. data/lib/solr/response.rb +27 -0
  65. data/lib/solr/solrtasks.rb +27 -0
  66. data/lib/solr/util.rb +32 -0
  67. data/lib/solr/xml.rb +44 -0
  68. data/lib/solr.rb +26 -0
  69. data/solr/CHANGES.txt +1207 -0
  70. data/solr/LICENSE.txt +712 -0
  71. data/solr/NOTICE.txt +90 -0
  72. data/solr/etc/jetty.xml +205 -0
  73. data/solr/etc/webdefault.xml +379 -0
  74. data/solr/lib/easymock.jar +0 -0
  75. data/solr/lib/jetty-6.1.3.jar +0 -0
  76. data/solr/lib/jetty-util-6.1.3.jar +0 -0
  77. data/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
  78. data/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
  79. data/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
  80. data/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
  81. data/solr/lib/servlet-api-2.4.jar +0 -0
  82. data/solr/lib/servlet-api-2.5-6.1.3.jar +0 -0
  83. data/solr/lib/xpp3-1.1.3.4.O.jar +0 -0
  84. data/solr/solr/README.txt +52 -0
  85. data/solr/solr/bin/abc +176 -0
  86. data/solr/solr/bin/abo +176 -0
  87. data/solr/solr/bin/backup +108 -0
  88. data/solr/solr/bin/backupcleaner +142 -0
  89. data/solr/solr/bin/commit +128 -0
  90. data/solr/solr/bin/optimize +129 -0
  91. data/solr/solr/bin/readercycle +129 -0
  92. data/solr/solr/bin/rsyncd-disable +77 -0
  93. data/solr/solr/bin/rsyncd-enable +76 -0
  94. data/solr/solr/bin/rsyncd-start +145 -0
  95. data/solr/solr/bin/rsyncd-stop +105 -0
  96. data/solr/solr/bin/scripts-util +83 -0
  97. data/solr/solr/bin/snapcleaner +148 -0
  98. data/solr/solr/bin/snapinstaller +168 -0
  99. data/solr/solr/bin/snappuller +248 -0
  100. data/solr/solr/bin/snappuller-disable +77 -0
  101. data/solr/solr/bin/snappuller-enable +77 -0
  102. data/solr/solr/bin/snapshooter +109 -0
  103. data/solr/solr/conf/admin-extra.html +31 -0
  104. data/solr/solr/conf/protwords.txt +21 -0
  105. data/solr/solr/conf/schema.xml +126 -0
  106. data/solr/solr/conf/scripts.conf +24 -0
  107. data/solr/solr/conf/solrconfig.xml +458 -0
  108. data/solr/solr/conf/stopwords.txt +57 -0
  109. data/solr/solr/conf/synonyms.txt +31 -0
  110. data/solr/solr/conf/xslt/example.xsl +132 -0
  111. data/solr/solr/conf/xslt/example_atom.xsl +63 -0
  112. data/solr/solr/conf/xslt/example_rss.xsl +62 -0
  113. data/solr/start.jar +0 -0
  114. data/solr/webapps/solr.war +0 -0
  115. data/test/config/solr.yml +2 -0
  116. data/test/db/connections/mysql/connection.rb +10 -0
  117. data/test/db/connections/sqlite/connection.rb +8 -0
  118. data/test/db/migrate/001_create_books.rb +15 -0
  119. data/test/db/migrate/002_create_movies.rb +12 -0
  120. data/test/db/migrate/003_create_categories.rb +11 -0
  121. data/test/db/migrate/004_create_electronics.rb +16 -0
  122. data/test/db/migrate/005_create_authors.rb +12 -0
  123. data/test/db/migrate/006_create_postings.rb +9 -0
  124. data/test/db/migrate/007_create_posts.rb +13 -0
  125. data/test/db/migrate/008_create_gadgets.rb +11 -0
  126. data/test/fixtures/authors.yml +9 -0
  127. data/test/fixtures/books.yml +13 -0
  128. data/test/fixtures/categories.yml +7 -0
  129. data/test/fixtures/db_definitions/mysql.sql +41 -0
  130. data/test/fixtures/electronics.yml +49 -0
  131. data/test/fixtures/movies.yml +9 -0
  132. data/test/fixtures/postings.yml +10 -0
  133. data/test/functional/acts_as_solr_test.rb +413 -0
  134. data/test/functional/association_indexing_test.rb +37 -0
  135. data/test/functional/faceted_search_test.rb +163 -0
  136. data/test/functional/multi_solr_search_test.rb +57 -0
  137. data/test/models/author.rb +10 -0
  138. data/test/models/book.rb +10 -0
  139. data/test/models/category.rb +8 -0
  140. data/test/models/electronic.rb +25 -0
  141. data/test/models/gadget.rb +9 -0
  142. data/test/models/movie.rb +17 -0
  143. data/test/models/novel.rb +2 -0
  144. data/test/models/post.rb +3 -0
  145. data/test/models/posting.rb +11 -0
  146. data/test/test_helper.rb +54 -0
  147. data/test/unit/acts_methods_shoulda.rb +68 -0
  148. data/test/unit/class_methods_shoulda.rb +85 -0
  149. data/test/unit/common_methods_shoulda.rb +111 -0
  150. data/test/unit/instance_methods_shoulda.rb +318 -0
  151. data/test/unit/lazy_document_shoulda.rb +34 -0
  152. data/test/unit/parser_instance.rb +19 -0
  153. data/test/unit/parser_methods_shoulda.rb +268 -0
  154. data/test/unit/solr_instance.rb +49 -0
  155. data/test/unit/test_helper.rb +24 -0
  156. metadata +241 -0
@@ -0,0 +1,109 @@
1
+ #!/bin/bash
2
+ #
3
+ # Licensed to the Apache Software Foundation (ASF) under one or more
4
+ # contributor license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright ownership.
6
+ # The ASF licenses this file to You under the Apache License, Version 2.0
7
+ # (the "License"); you may not use this file except in compliance with
8
+ # the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ # Shell script to take a snapshot of a Solr Lucene collection.
19
+
20
+ orig_dir=$(pwd)
21
+ cd ${0%/*}/..
22
+ solr_root=$(pwd)
23
+ cd ${orig_dir}
24
+
25
+ unset data_dir user verbose debug
26
+ . ${solr_root}/bin/scripts-util
27
+
28
+ # set up variables
29
+ prog=${0##*/}
30
+ log=${solr_root}/logs/${prog}.log
31
+
32
+ # define usage string
33
+ USAGE="\
34
+ usage: $prog [-d dir] [-u username] [-v]
35
+ -d specify directory holding index data
36
+ -u specify user to sudo to before running script
37
+ -v increase verbosity
38
+ -V output debugging info
39
+ "
40
+
41
+ # parse args
42
+ while getopts d:u:vV OPTION
43
+ do
44
+ case $OPTION in
45
+ d)
46
+ data_dir="$OPTARG"
47
+ ;;
48
+ u)
49
+ user="$OPTARG"
50
+ ;;
51
+ v)
52
+ verbose="v"
53
+ ;;
54
+ V)
55
+ debug="V"
56
+ ;;
57
+ *)
58
+ echo "$USAGE"
59
+ exit 1
60
+ esac
61
+ done
62
+
63
+ [[ -n $debug ]] && set -x
64
+
65
+ fixUser "$@"
66
+
67
+ # use default value for data_dir if not specified
68
+ # relative path starts at ${solr_root}
69
+ if [[ -z ${data_dir} ]]
70
+ then
71
+ data_dir=${solr_root}/data
72
+ elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]]
73
+ then
74
+ data_dir=${solr_root}/${data_dir}
75
+ fi
76
+
77
+ start=`date +"%s"`
78
+
79
+ logMessage started by $oldwhoami
80
+ logMessage command: $0 $@
81
+
82
+ snap_name=snapshot.`date +"%Y%m%d%H%M%S"`
83
+ name=${data_dir}/${snap_name}
84
+ temp=${data_dir}/temp-${snap_name}
85
+
86
+ if [[ -d ${name} ]]
87
+ then
88
+ logMessage snapshot directory ${name} already exists
89
+ logExit aborted 1
90
+ fi
91
+
92
+ if [[ -d ${temp} ]]
93
+ then
94
+ logMessage snapshoting of ${name} in progress
95
+ logExit aborted 1
96
+ fi
97
+
98
+ # clean up after INT/TERM
99
+ trap 'echo cleaning up, please wait ...;/bin/rm -rf ${name} ${temp};logExit aborted 13' INT TERM
100
+
101
+ logMessage taking snapshot ${name}
102
+
103
+ # take a snapshot using hard links into temporary location
104
+ # then move it into place atomically
105
+ cp -lr ${data_dir}/index ${temp}
106
+ mv ${temp} ${name}
107
+
108
+ logExit ended 0
109
+
@@ -0,0 +1,31 @@
1
+ <!--
2
+ Licensed to the Apache Software Foundation (ASF) under one or more
3
+ contributor license agreements. See the NOTICE file distributed with
4
+ this work for additional information regarding copyright ownership.
5
+ The ASF licenses this file to You under the Apache License, Version 2.0
6
+ (the "License"); you may not use this file except in compliance with
7
+ the License. You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ -->
17
+
18
+ <!-- The content of this page will be statically included into the top
19
+ of the admin page. Uncomment this as an example to see there the content
20
+ will show up.
21
+
22
+ <hr>
23
+ <i>This line will appear before the first table</i>
24
+ <tr>
25
+ <td colspan="2">
26
+ This row will be appended to the end of the first table
27
+ </td>
28
+ </tr>
29
+ <hr>
30
+
31
+ -->
@@ -0,0 +1,21 @@
1
+ # The ASF licenses this file to You under the Apache License, Version 2.0
2
+ # (the "License"); you may not use this file except in compliance with
3
+ # the License. You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.
12
+
13
+ #-----------------------------------------------------------------------
14
+ # Use a protected word file to protect against the stemmer reducing two
15
+ # unrelated words to the same base word.
16
+
17
+ # Some non-words that normally won't be encountered,
18
+ # just to test that they won't be stemmed.
19
+ dontstems
20
+ zwhacky
21
+
@@ -0,0 +1,126 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!--
3
+ Licensed to the Apache Software Foundation (ASF) under one or more
4
+ contributor license agreements. See the NOTICE file distributed with
5
+ this work for additional information regarding copyright ownership.
6
+ The ASF licenses this file to You under the Apache License, Version 2.0
7
+ (the "License"); you may not use this file except in compliance with
8
+ the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ -->
18
+
19
+ <!--
20
+ This is the Solr schema file. This file should be named "schema.xml" and
21
+ should be in the conf directory under the solr home
22
+ (i.e. ./solr/conf/schema.xml by default)
23
+ or located where the classloader for the Solr webapp can find it.
24
+
25
+ This example schema is the recommended starting point for users.
26
+ It should be kept correct and concise, usable out-of-the-box.
27
+
28
+ For more information, on how to customize this file, please see
29
+ http://wiki.apache.org/solr/SchemaXml
30
+ -->
31
+
32
+ <schema name="acts_as_solr" version="0.9">
33
+ <types>
34
+ <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="false"/>
35
+ <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="false"/>
36
+ <fieldType name="integer" class="solr.IntField" omitNorms="false"/>
37
+ <fieldType name="long" class="solr.LongField" omitNorms="false"/>
38
+ <fieldType name="float" class="solr.FloatField" omitNorms="false"/>
39
+ <fieldType name="double" class="solr.DoubleField" omitNorms="false"/>
40
+ <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="false"/>
41
+ <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="false"/>
42
+ <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="false"/>
43
+ <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="false"/>
44
+ <fieldType name="date" class="solr.DateField" sortMissingLast="true" omitNorms="false"/>
45
+ <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
46
+ <analyzer>
47
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
48
+ </analyzer>
49
+ </fieldType>
50
+
51
+ <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
52
+ <analyzer type="index">
53
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
54
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
55
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
56
+ <filter class="solr.LowerCaseFilterFactory"/>
57
+ <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
58
+ <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
59
+ </analyzer>
60
+ <analyzer type="query">
61
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
62
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
63
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
64
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
65
+ <filter class="solr.LowerCaseFilterFactory"/>
66
+ <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
67
+ <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
68
+ </analyzer>
69
+ </fieldType>
70
+
71
+ <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100" >
72
+ <analyzer>
73
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
74
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
75
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
76
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
77
+ <filter class="solr.LowerCaseFilterFactory"/>
78
+ <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
79
+ <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
80
+ </analyzer>
81
+ </fieldType>
82
+
83
+ <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="false">
84
+ <analyzer>
85
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
86
+ <filter class="solr.LowerCaseFilterFactory" />
87
+ <filter class="solr.TrimFilterFactory" />
88
+ <filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z])" replacement="" replace="all"/>
89
+ </analyzer>
90
+ </fieldType>
91
+
92
+ <fieldtype name="text_zh" class="solr.TextField">
93
+ <analyzer class="org.apache.lucene.analysis.cn.ChineseAnalyzer"/>
94
+ </fieldtype>
95
+
96
+ </types>
97
+
98
+
99
+ <fields>
100
+ <field name="id" type="string" indexed="true" stored="true" required="true" />
101
+ <field name="pk_i" type="integer" indexed="true" stored="true"/>
102
+ <field name="pk_s" type="string" indexed="true" stored="true"/>
103
+ <field name="text" type="text" indexed="true" stored="false" multiValued="true"/>
104
+
105
+ <dynamicField name="*_i" type="integer" indexed="true" stored="false"/>
106
+ <dynamicField name="*_t" type="text" indexed="true" stored="false"/>
107
+ <dynamicField name="*_f" type="float" indexed="true" stored="false"/>
108
+ <dynamicField name="*_b" type="boolean" indexed="true" stored="false"/>
109
+ <dynamicField name="*_d" type="date" indexed="true" stored="false"/>
110
+ <dynamicField name="*_s" type="string" indexed="true" stored="false"/>
111
+ <dynamicField name="*_ri" type="sint" indexed="true" stored="false"/>
112
+ <dynamicField name="*_rf" type="sfloat" indexed="true" stored="false"/>
113
+ <dynamicField name="*_facet" type="string" indexed="true" stored="false"/>
114
+ <dynamicField name="*_s_mv" type="string" indexed="true" stored="false" multiValued="true"/>
115
+ <dynamicField name="*_zh_text" type="text_zh" indexed="true" stored="false" multiValued="true"/>
116
+ <dynamicField name="*_display" type="text" indexed="false" stored="true" multiValued="true"/>
117
+ </fields>
118
+
119
+ <uniqueKey>id</uniqueKey>
120
+ <defaultSearchField>text</defaultSearchField>
121
+
122
+ <copyField source="*_t" dest="text"/>
123
+ <copyField source="*_facet" dest="text"/>
124
+ <solrQueryParser defaultOperator="AND"/>
125
+
126
+ </schema>
@@ -0,0 +1,24 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright ownership.
4
+ # The ASF licenses this file to You under the Apache License, Version 2.0
5
+ # (the "License"); you may not use this file except in compliance with
6
+ # the License. You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ user=
17
+ solr_hostname=localhost
18
+ solr_port=8983
19
+ rsyncd_port=18983
20
+ data_dir=
21
+ webapp_name=solr
22
+ master_host=
23
+ master_data_dir=
24
+ master_status_dir=