From ae01531d916098199ccbc2d5a4c77ce43426fb53 Mon Sep 17 00:00:00 2001 From: Eliot Jordan Date: Mon, 2 Aug 2021 12:46:02 -0500 Subject: [PATCH 1/8] Add pulibrary solr image to circle and lando --- .circleci/config.yml | 16 +++++++++++----- .lando.yml | 10 ++++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c976f5612..ba38e6455 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -16,6 +16,10 @@ jobs: POSTGRES_USER: orangelight POSTGRES_DB: orangelight_test POSTGRES_HOST_AUTH_METHOD: trust + + # Custom solr container image + - image: pulibrary/pulmap-solr:8.4 + command: server/scripts/ci-start.sh working_directory: ~/orangelight steps: - checkout @@ -89,14 +93,16 @@ jobs: key: orangelight-{{ checksum "yarn.lock" }} paths: - ~/.cache/yarn - - run: - name: Start Solr test instance - command: bundle exec rake server:test - background: true - - run: bin/jetty_wait - run: name: npm install command: npm install + - run: + name: Load config into solr + command: | + cd solr/conf + zip -1 -r solr_config.zip ./* + curl -H "Content-type:application/octet-stream" --data-binary @solr_config.zip "http://solr:SolrRocks@127.0.0.1:8983/solr/admin/configs?action=UPLOAD&name=pulmap" + curl -H 'Content-type: application/json' http://solr:SolrRocks@127.0.0.1:8983/api/collections/ -d '{create: {name: pulmap-core-test, config: pulmap, numShards: 1}}' - run: name: Wait for DB command: dockerize -wait tcp://localhost:5432 -timeout 1m diff --git a/.lando.yml b/.lando.yml index b96e30473..5f3c5b131 100644 --- a/.lando.yml +++ b/.lando.yml @@ -1,13 +1,19 @@ name: orangelight services: orangelight_test_solr: - type: solr:8.4 + type: solr:custom + overrides: + image: pulibrary/ci-solr:8.4 + command: server/scripts/lando-start.sh portforward: true core: orangelight-core-test config: dir: "solr/conf" orangelight_development_solr: - type: solr:8.4 + type: solr:custom + overrides: + image: pulibrary/ci-solr:8.4 + command: server/scripts/lando-start.sh portforward: true core: orangelight-core-dev config: From 4f38e3ee83950884d8e93f052537c0ffdaf07ded Mon Sep 17 00:00:00 2001 From: Eliot Jordan Date: Mon, 2 Aug 2021 13:19:46 -0500 Subject: [PATCH 2/8] Add solr configuration to repo --- .gitignore | 5 +- solr/conf/CJKFoldingFilter.jar | Bin 0 -> 56484 bytes ...cene-umich-solr-filters-6.0.0-SNAPSHOT.jar | Bin 0 -> 41568 bytes solr/conf/mapping-ISOLatin1Accent.txt | 246 +++++ solr/conf/protwords.txt | 24 + solr/conf/schema.xml | 879 ++++++++++++++++++ solr/conf/solrconfig.xml | 521 +++++++++++ solr/conf/spellings.txt | 2 + solr/conf/stopwords.txt | 58 ++ solr/conf/stopwords_en.txt | 58 ++ solr/conf/synonyms.txt | 31 + 11 files changed, 1820 insertions(+), 4 deletions(-) create mode 100644 solr/conf/CJKFoldingFilter.jar create mode 100644 solr/conf/lucene-umich-solr-filters-6.0.0-SNAPSHOT.jar create mode 100644 solr/conf/mapping-ISOLatin1Accent.txt create mode 100644 solr/conf/protwords.txt create mode 100644 solr/conf/schema.xml create mode 100644 solr/conf/solrconfig.xml create mode 100644 solr/conf/spellings.txt create mode 100644 solr/conf/stopwords.txt create mode 100644 solr/conf/stopwords_en.txt create mode 100644 solr/conf/synonyms.txt diff --git a/.gitignore b/.gitignore index 42cbbe7ef..486379fc5 100644 --- a/.gitignore +++ b/.gitignore @@ -25,10 +25,7 @@ coverage/ .byebug_history # Ignore dreaded .DS_Store .DS_Store -# Ignore sorl config and libs downloaded from https://github.com/pulibrary/pul_solr/ -solr/conf/*.txt -solr/conf/*.xml -solr/conf/*.jar + /public/packs /public/packs-test /node_modules diff --git a/solr/conf/CJKFoldingFilter.jar b/solr/conf/CJKFoldingFilter.jar new file mode 100644 index 0000000000000000000000000000000000000000..0ba3634ec149df0d4ee3bc87ba404cdce161ce74 GIT binary patch literal 56484 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 literal 0 HcmV?d00001 diff --git a/solr/conf/lucene-umich-solr-filters-6.0.0-SNAPSHOT.jar b/solr/conf/lucene-umich-solr-filters-6.0.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..a7a93b718b492d52ee3872a5e9f6a127c685e80c GIT binary patch literal 41568 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 z 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 "target" +# "source".length() > 0 (source cannot be empty.) +# "target".length() >= 0 (target can be empty.) + +# example: +# "??" => "A" +# "\u00C0" => "A" +# "\u00C0" => "\u0041" +# "??" => "ss" +# "\t" => " " +# "\n" => "" + +# ?? => A +"\u00C0" => "A" + +# ?? => A +"\u00C1" => "A" + +# ?? => A +"\u00C2" => "A" + +# ?? => A +"\u00C3" => "A" + +# ?? => A +"\u00C4" => "A" + +# ?? => A +"\u00C5" => "A" + +# ?? => AE +"\u00C6" => "AE" + +# ?? => C +"\u00C7" => "C" + +# ?? => E +"\u00C8" => "E" + +# ?? => E +"\u00C9" => "E" + +# ?? => E +"\u00CA" => "E" + +# ?? => E +"\u00CB" => "E" + +# ?? => I +"\u00CC" => "I" + +# ?? => I +"\u00CD" => "I" + +# ?? => I +"\u00CE" => "I" + +# ?? => I +"\u00CF" => "I" + +# ?? => IJ +"\u0132" => "IJ" + +# ?? => D +"\u00D0" => "D" + +# ?? => N +"\u00D1" => "N" + +# ?? => O +"\u00D2" => "O" + +# ?? => O +"\u00D3" => "O" + +# ?? => O +"\u00D4" => "O" + +# ?? => O +"\u00D5" => "O" + +# ?? => O +"\u00D6" => "O" + +# ?? => O +"\u00D8" => "O" + +# ?? => OE +"\u0152" => "OE" + +# ?? +"\u00DE" => "TH" + +# ?? => U +"\u00D9" => "U" + +# ?? => U +"\u00DA" => "U" + +# ?? => U +"\u00DB" => "U" + +# ?? => U +"\u00DC" => "U" + +# ?? => Y +"\u00DD" => "Y" + +# ?? => Y +"\u0178" => "Y" + +# ?? => a +"\u00E0" => "a" + +# ?? => a +"\u00E1" => "a" + +# ?? => a +"\u00E2" => "a" + +# ?? => a +"\u00E3" => "a" + +# ?? => a +"\u00E4" => "a" + +# ?? => a +"\u00E5" => "a" + +# ?? => ae +"\u00E6" => "ae" + +# ?? => c +"\u00E7" => "c" + +# ?? => e +"\u00E8" => "e" + +# ?? => e +"\u00E9" => "e" + +# ?? => e +"\u00EA" => "e" + +# ?? => e +"\u00EB" => "e" + +# ?? => i +"\u00EC" => "i" + +# ?? => i +"\u00ED" => "i" + +# ?? => i +"\u00EE" => "i" + +# ?? => i +"\u00EF" => "i" + +# ?? => ij +"\u0133" => "ij" + +# ?? => d +"\u00F0" => "d" + +# ?? => n +"\u00F1" => "n" + +# ?? => o +"\u00F2" => "o" + +# ?? => o +"\u00F3" => "o" + +# ?? => o +"\u00F4" => "o" + +# ?? => o +"\u00F5" => "o" + +# ?? => o +"\u00F6" => "o" + +# ?? => o +"\u00F8" => "o" + +# ?? => oe +"\u0153" => "oe" + +# ?? => ss +"\u00DF" => "ss" + +# ?? => th +"\u00FE" => "th" + +# ?? => u +"\u00F9" => "u" + +# ?? => u +"\u00FA" => "u" + +# ?? => u +"\u00FB" => "u" + +# ?? => u +"\u00FC" => "u" + +# ?? => y +"\u00FD" => "y" + +# ?? => y +"\u00FF" => "y" + +# ??? => ff +"\uFB00" => "ff" + +# ??? => fi +"\uFB01" => "fi" + +# ??? => fl +"\uFB02" => "fl" + +# ??? => ffi +"\uFB03" => "ffi" + +# ??? => ffl +"\uFB04" => "ffl" + +# ??? => ft +"\uFB05" => "ft" + +# ??? => st +"\uFB06" => "st" diff --git a/solr/conf/protwords.txt b/solr/conf/protwords.txt new file mode 100644 index 000000000..3f0dfb9b6 --- /dev/null +++ b/solr/conf/protwords.txt @@ -0,0 +1,24 @@ +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#----------------------------------------------------------------------- +# Use a protected word file to protect against the stemmer reducing two +# unrelated words to the same base word. + +perthes +constanter +bible +oversize +overseer +populism +musical +musicals diff --git a/solr/conf/schema.xml b/solr/conf/schema.xml new file mode 100644 index 000000000..aa5773597 --- /dev/null +++ b/solr/conf/schema.xml @@ -0,0 +1,879 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/solr/conf/solrconfig.xml b/solr/conf/solrconfig.xml new file mode 100644 index 000000000..c400a51e4 --- /dev/null +++ b/solr/conf/solrconfig.xml @@ -0,0 +1,521 @@ + + + + + + 8.4.1 + + + + + + + + + + + ${solr.core0.data.dir:} + + + + + + + ${solr.blacklight-core.data.dir:} + + + + + + + ${solr.data.dir:} + + + + + + + dedupe + + + + + + solrpingquery + + + all + + + + + + true + hashed_id_s + false + id + solr.processor.Lookup3Signature + + + + + + + + true + json + true + + + + + + solr + + + + + + + + + + true + + 100 + 500 + + + *:*score desc, pub_date_start_sort desc, title_sort asc + *:*pub_date_start_sort desc, title_sort asc + *:*pub_date_start_sort asc, title_sort asc + *:*author_sort asc, title_sort asc + *:*title_sort asc, pub_date_start_sort desc + naturescore desc, pub_date_start_sort desc, title_sort asc + timescore desc, pub_date_start_sort desc, title_sort asc + bookscore desc, pub_date_start_sort desc, title_sort asc + sciencescore desc, pub_date_start_sort desc, title_sort asc + musicscore desc, pub_date_start_sort desc, title_sort asc + + format:Audio + format:Book + format:Data File + format:Journal + format:Manuscript + format:Map + format:Mixed Material + format:Musical Score + format:Senior Thesis + format:Thesis + format:Video/Projected Medium + format:Visual Material + + location:Architecture Library + location:East Asian Library + location:Engineering Library + location:Fine Annex + location:Firestone Library + location:Forrestal Annex + location:Harold P. Furth Plasma Physics Library + location:Lewis Library + location:Marquand Library + location:Mendel Music Library + location:Mudd Manuscript Library + location:Rare Books and Special Collections + location:ReCAP + location:Stokes Library + location:Video Library + + cataloged_tdt:[NOW/DAY-7DAYS TO NOW/DAY+1DAY] + cataloged_tdt:[NOW/DAY-14DAYS TO NOW/DAY+1DAY] + cataloged_tdt:[NOW/DAY-21DAYS TO NOW/DAY+1DAY] + cataloged_tdt:[NOW/DAY-1MONTH TO NOW/DAY+1DAY] + cataloged_tdt:[NOW/DAY-2MONTHS TO NOW/DAY+1DAY] + cataloged_tdt:[NOW/DAY-3MONTHS TO NOW/DAY+1DAY] + cataloged_tdt:[NOW/DAY-6MONTHS TO NOW/DAY+1DAY] + + language_facet:English + language_facet:German + language_facet:French + language_facet:Spanish + language_facet:Chinese + language_facet:Italian + language_facet:Russian + language_facet:Arabic + language_facet:Japanese + language_facet:Latin + + subject_era_facet:20th century + subject_era_facet:19th century + subject_era_facet:18th century + subject_era_facet:21st century + subject_era_facet:17th century + + lc_1letter_facet:A - General Works + lc_1letter_facet:B - Philosophy, Psychology, Religion + lc_1letter_facet:C - Historical Sciences (Archaeology, Genealogy) + lc_1letter_facet:D - World History + lc_1letter_facet:E - History of the Americas (General) + lc_1letter_facet:F - History of the Americas (Local) + lc_1letter_facet:G - Geography, Anthropology, Recreation + lc_1letter_facet:H - Social Sciences + lc_1letter_facet:J - Political Science + lc_1letter_facet:K - Law + lc_1letter_facet:L - Education + lc_1letter_facet:M - Music + lc_1letter_facet:N - Fine Arts + lc_1letter_facet:P - Language & Literature + lc_1letter_facet:Q - Science + lc_1letter_facet:R - Medicine + lc_1letter_facet:S - Agriculture + lc_1letter_facet:T - Technology + lc_1letter_facet:U - Military Science + lc_1letter_facet:Z - Bibliography, Library Science, Information Resources + + subject_topic_facet:History + subject_topic_facet:United States + subject_topic_facet:Politics and government + subject_topic_facet:History and criticism + subject_topic_facet:Great Britain + subject_topic_facet:United States. Congress + subject_topic_facet:Claims + subject_topic_facet:Bills, Private + subject_topic_facet:China + subject_topic_facet:France + + genre_facet:Biography + genre_facet:Congresses + genre_facet:Periodicals + genre_facet:Private bills + genre_facet:Exhibitions + genre_facet:Early works to 1800 + genre_facet:Fiction + genre_facet:Maps + genre_facet:Bibliography + genre_facet:Catalogs + + sudoc_facet:X/Y - Congress + + acces_facet:Online + acces_facet:In the Library + + + + + + + + + edismax + explicit + 10 + on + *:* + 6<90% + + + if(field(numeric_id_b),50,0) + + + + + title_a_index^1500 + author_main_unstem_search^1000 + title_unstem_search^40 + title_display^40 + author_unstem_search^40 + subject_topic_unstem_search^18 + subject_unstem_search^15 + subject_topic_index^12 + subject_t^10 + subject_addl_unstem_search^8 + subject_addl_t^4 + isbn_t^3 + issn_s^3 + lccn_s^3 + text + description_t + cjk_all + + + title_245a_lr^16000 + title_245_lr^16000 + title_a_index^12000 + author_main_unstem_search^10000 + title_unstem_search^400 + title_display^400 + author_unstem_search^400 + subject_topic_unstem_search^180 + subject_unstem_search^150 + subject_topic_index^120 + subject_t^100 + subject_addl_unstem_search^80 + subject_addl_t^40 + isbn_t^30 + issn_s^30 + lccn_s^30 + text^10 + description_t^10 + cjk_all^10 + + + author_main_unstem_search^20 + author_unstem_search^10 + cjk_author + + + author_main_unstem_search^200 + author_unstem_search^100 + cjk_author^10 + + + title_245a_la^50 + title_245_la^10 + title_la^2 + title_addl_la + + + title_245a_lr^600 + title_245_lr^600 + title_245a_la^500 + title_245_la^100 + title_lr^100 + title_la^20 + title_addl_la^10 + + + more_in_this_series_la + + + more_in_this_series_la + + + pub_created_unstem_search + cjk_publisher + + + pub_created_unstem_search + cjk_publisher + + + notes_index + cjk_notes + + + notes_index + cjk_notes + + + series_title_index^5 + series_ae_index + series_statement_index + linked_series_title_index + linked_series_index + original_version_series_index + cjk_series_title + + + series_title_index^50 + series_ae_index^10 + series_statement_index^10 + linked_series_title_index^10 + linked_series_index^10 + original_version_series_index^10 + cjk_series_title^10 + + + title_a_index^500 + title_unstem_search^100 + title_display^50 + other_title_index^5 + series_title_index^5 + uniform_title_s^5 + title_vern_display + content_title_index + contains_title_index + linked_title_index + series_ae_index + series_statement_index + linked_series_title_index + linked_series_index + original_version_series_index + cjk_title + + + title_245a_lr^5500 + title_245_lr^5500 + title_a_index^5000 + title_unstem_search^1000 + title_display^500 + other_title_index^50 + series_title_index^50 + uniform_title_s^50 + title_vern_display^10 + content_title_index^10 + contains_title_index^10 + linked_title_index^10 + series_ae_index^10 + series_statement_index^10 + linked_series_title_index^10 + linked_series_index^10 + original_version_series_index^10 + cjk_title^10 + + + subject_topic_unstem_search^25 + subject_unstem_search^20 + cjk_subject + + + subject_topic_unstem_search^250 + subject_unstem_search^200 + cjk_subject^10 + + + 3 + 0.01 + + + id, + score, + author_display, + marc_relator_display, + format, + pub_created_display, + title_display, + title_vern_display, + isbn_s, + oclc_s, + lccn_s, + holdings_1display, + electronic_access_1display, + electronic_portfolio_s, + cataloged_tdt + + + true + 1 + 10 + format + language_facet + pub_date_start_sort + advanced_location_s + index + index + 1000 + 500 + + + + + + + + + + + + + + + + + + all + * + 1 + {!raw f=id v=$id} + + + diff --git a/solr/conf/spellings.txt b/solr/conf/spellings.txt new file mode 100644 index 000000000..162a044d5 --- /dev/null +++ b/solr/conf/spellings.txt @@ -0,0 +1,2 @@ +pizza +history diff --git a/solr/conf/stopwords.txt b/solr/conf/stopwords.txt new file mode 100644 index 000000000..b5824da32 --- /dev/null +++ b/solr/conf/stopwords.txt @@ -0,0 +1,58 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#----------------------------------------------------------------------- +# a couple of test stopwords to test that the words are really being +# configured from this file: +stopworda +stopwordb + +#Standard english stop words taken from Lucene's StopAnalyzer +a +an +and +are +as +at +be +but +by +for +if +in +into +is +it +no +not +of +on +or +s +such +t +that +the +their +then +there +these +they +this +to +was +will +with + diff --git a/solr/conf/stopwords_en.txt b/solr/conf/stopwords_en.txt new file mode 100644 index 000000000..b5824da32 --- /dev/null +++ b/solr/conf/stopwords_en.txt @@ -0,0 +1,58 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#----------------------------------------------------------------------- +# a couple of test stopwords to test that the words are really being +# configured from this file: +stopworda +stopwordb + +#Standard english stop words taken from Lucene's StopAnalyzer +a +an +and +are +as +at +be +but +by +for +if +in +into +is +it +no +not +of +on +or +s +such +t +that +the +their +then +there +these +they +this +to +was +will +with + diff --git a/solr/conf/synonyms.txt b/solr/conf/synonyms.txt new file mode 100644 index 000000000..23002fec5 --- /dev/null +++ b/solr/conf/synonyms.txt @@ -0,0 +1,31 @@ +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#----------------------------------------------------------------------- +#some test synonym mappings unlikely to appear in real input text +#aaa => aaaa +#bbb => bbbb1 bbbb2 +#ccc => cccc1,cccc2 +#a\=>a => b\=>b +#a\,a => b\,b +#fooaaa,baraaa,bazaaa + +# Some synonym groups specific to this example +GB,gib,gigabyte,gigabytes +MB,mib,megabyte,megabytes +Television, Televisions, TV, TVs +#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming +#after us won't split it into two words. + +# Synonym mappings can be used for spelling correction too +#pixima => pixma + From 8752a857795f1b71f26c3f5671bde532639715c8 Mon Sep 17 00:00:00 2001 From: Eliot Jordan Date: Mon, 2 Aug 2021 13:33:27 -0500 Subject: [PATCH 3/8] Update circle --- .circleci/config.yml | 7 ++++--- config/blacklight.yml | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ba38e6455..9d905f166 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -8,6 +8,7 @@ jobs: RAILS_ENV: test ORANGELIGHT_HOST: localhost ORANGELIGHT_USER: postgres + SOLR_URL: http://solr:SolrRocks@localhost:8983/solr/orangelight-core-test NVM_HOME: ~/.nvm # Service container image available at 'host: localhost' @@ -18,7 +19,7 @@ jobs: POSTGRES_HOST_AUTH_METHOD: trust # Custom solr container image - - image: pulibrary/pulmap-solr:8.4 + - image: pulibrary/ci-solr:8.4 command: server/scripts/ci-start.sh working_directory: ~/orangelight steps: @@ -101,8 +102,8 @@ jobs: command: | cd solr/conf zip -1 -r solr_config.zip ./* - curl -H "Content-type:application/octet-stream" --data-binary @solr_config.zip "http://solr:SolrRocks@127.0.0.1:8983/solr/admin/configs?action=UPLOAD&name=pulmap" - curl -H 'Content-type: application/json' http://solr:SolrRocks@127.0.0.1:8983/api/collections/ -d '{create: {name: pulmap-core-test, config: pulmap, numShards: 1}}' + curl -H "Content-type:application/octet-stream" --data-binary @solr_config.zip "http://solr:SolrRocks@127.0.0.1:8983/solr/admin/configs?action=UPLOAD&name=orangelight" + curl -H 'Content-type: application/json' http://solr:SolrRocks@127.0.0.1:8983/api/collections/ -d '{create: {name: orangelight-core-test, config: orangelight, numShards: 1}}' - run: name: Wait for DB command: dockerize -wait tcp://localhost:5432 -timeout 1m diff --git a/config/blacklight.yml b/config/blacklight.yml index 94770a84e..5186269b6 100644 --- a/config/blacklight.yml +++ b/config/blacklight.yml @@ -15,7 +15,7 @@ development: url: <%= ENV['SOLR_URL'] || "http://#{ENV["lando_orangelight_development_solr_conn_host"] || "127.0.0.1"}:#{ENV["lando_orangelight_development_solr_conn_port"] || 8983}/solr/orangelight-core-dev" %> test: &test adapter: solr - url: <%= "http://#{ENV["lando_orangelight_test_solr_conn_host"] || "127.0.0.1"}:#{ENV['SOLR_TEST_PORT'] || ENV["lando_orangelight_test_solr_conn_port"] || 8888}/solr/orangelight-core-test" %> + url: <%= ENV['SOLR_URL'] || "http://#{ENV["lando_orangelight_test_solr_conn_host"] || "127.0.0.1"}:#{ENV['SOLR_TEST_PORT'] || ENV["lando_orangelight_test_solr_conn_port"] || 8888}/solr/orangelight-core-test" %> staging: adapter: solr url: <%= ENV['SOLR_URL'] || "http://127.0.0.1:8983/solr/blacklight-core" %> From b7a2d58b3832dacb0068c78d9f3860e2254f969e Mon Sep 17 00:00:00 2001 From: Eliot Jordan Date: Mon, 2 Aug 2021 15:21:11 -0500 Subject: [PATCH 4/8] Add docker --- .circleci/config.yml | 5 ++++- .lando.yml | 4 ++-- solr/conf/.keep | 0 solr/docker/CJKFoldingFilter.jar | Bin 0 -> 56484 bytes solr/docker/Dockerfile | 4 ++++ ...lucene-umich-solr-filters-6.0.0-SNAPSHOT.jar | Bin 0 -> 41568 bytes 6 files changed, 10 insertions(+), 3 deletions(-) delete mode 100644 solr/conf/.keep create mode 100644 solr/docker/CJKFoldingFilter.jar create mode 100644 solr/docker/Dockerfile create mode 100644 solr/docker/lucene-umich-solr-filters-6.0.0-SNAPSHOT.jar diff --git a/.circleci/config.yml b/.circleci/config.yml index 9d905f166..97caa9384 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -19,7 +19,7 @@ jobs: POSTGRES_HOST_AUTH_METHOD: trust # Custom solr container image - - image: pulibrary/ci-solr:8.4 + - image: pulibrary/orangelight-solr:8.4 command: server/scripts/ci-start.sh working_directory: ~/orangelight steps: @@ -113,6 +113,9 @@ jobs: - run: name: Run rubocop command: bundle exec rake rubocop + - run: + name: Index Test Data + command: bundle exec rake pulsearch:solr:index - run: name: Run Rspec command: bundle exec rspec spec diff --git a/.lando.yml b/.lando.yml index 5f3c5b131..2d5ae0d04 100644 --- a/.lando.yml +++ b/.lando.yml @@ -3,7 +3,7 @@ services: orangelight_test_solr: type: solr:custom overrides: - image: pulibrary/ci-solr:8.4 + image: pulibrary/orangelight-solr:8.4 command: server/scripts/lando-start.sh portforward: true core: orangelight-core-test @@ -12,7 +12,7 @@ services: orangelight_development_solr: type: solr:custom overrides: - image: pulibrary/ci-solr:8.4 + image: pulibrary/orangelight-solr:8.4 command: server/scripts/lando-start.sh portforward: true core: orangelight-core-dev diff --git a/solr/conf/.keep b/solr/conf/.keep deleted file mode 100644 index e69de29bb..000000000 diff --git a/solr/docker/CJKFoldingFilter.jar b/solr/docker/CJKFoldingFilter.jar new file mode 100644 index 0000000000000000000000000000000000000000..0ba3634ec149df0d4ee3bc87ba404cdce161ce74 GIT binary patch literal 56484 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 literal 0 HcmV?d00001 diff --git a/solr/docker/Dockerfile b/solr/docker/Dockerfile new file mode 100644 index 000000000..188ff914c --- /dev/null +++ b/solr/docker/Dockerfile @@ -0,0 +1,4 @@ +FROM pulibrary/ci-solr:8.4 + +COPY --chown=$SOLR_USER:$SOLR_USER CJKFoldingFilter.jar /opt/solr/contrib/analysis-extras/lib/. +COPY --chown=$SOLR_USER:$SOLR_USER lucene-umich-solr-filters-6.0.0-SNAPSHOT.jar /opt/solr/contrib/analysis-extras/lib/. diff --git a/solr/docker/lucene-umich-solr-filters-6.0.0-SNAPSHOT.jar b/solr/docker/lucene-umich-solr-filters-6.0.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..a7a93b718b492d52ee3872a5e9f6a127c685e80c GIT binary patch literal 41568 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 z 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 Date: Mon, 2 Aug 2021 16:46:54 -0500 Subject: [PATCH 5/8] Remove JAVA and NPM install from CircleCI config --- .circleci/config.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 97caa9384..c5f089bf9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -42,16 +42,6 @@ jobs: command: | source ~/.nvm/nvm.sh curl -o- -L https://yarnpkg.com/install.sh | bash - - run: - name: Install Java 8 - command: | - sudo apt update - sudo apt install software-properties-common apt-transport-https - wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add - - sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ - sudo apt update - sudo apt install adoptopenjdk-8-hotspot - sudo update-alternatives --set java /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java #set timezone to est - run: name: Set Timezone to EST @@ -94,9 +84,6 @@ jobs: key: orangelight-{{ checksum "yarn.lock" }} paths: - ~/.cache/yarn - - run: - name: npm install - command: npm install - run: name: Load config into solr command: | From 79cf6b1f394878f83e02002514c7fc404a916529 Mon Sep 17 00:00:00 2001 From: Eliot Jordan Date: Mon, 2 Aug 2021 17:16:11 -0500 Subject: [PATCH 6/8] Improve CircleCI configuration --- .circleci/config.yml | 126 +++++++++++++++++++++++++++---------------- 1 file changed, 79 insertions(+), 47 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c5f089bf9..dfb28f768 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,7 @@ -version: 2 -jobs: - build: - # Primary command image where all commands run +--- +version: 2.1 +executors: + orangelight-executor: docker: - image: circleci/ruby:2.6-node-browsers environment: @@ -10,20 +10,47 @@ jobs: ORANGELIGHT_USER: postgres SOLR_URL: http://solr:SolrRocks@localhost:8983/solr/orangelight-core-test NVM_HOME: ~/.nvm - - # Service container image available at 'host: localhost' - image: postgres:10 environment: POSTGRES_USER: orangelight POSTGRES_DB: orangelight_test POSTGRES_HOST_AUTH_METHOD: trust - - # Custom solr container image - image: pulibrary/orangelight-solr:8.4 command: server/scripts/ci-start.sh working_directory: ~/orangelight + basic-executor: + docker: + - image: circleci/ruby:2.6-node-browsers + environment: + RAILS_ENV: test + NVM_HOME: ~/.nvm + working_directory: ~/orangelight + +commands: + setup-bundler: steps: + - run: gem install bundler -v '2.2.14' + # Restore bundle cache + - restore_cache: + keys: + - orangelight-{{ checksum "Gemfile.lock" }} + - orangelight- + # Bundle install dependencies + - run: + name: Install dependencies + command: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs 4 --retry 3 + - save_cache: + key: orangelight-{{ checksum "Gemfile.lock" }} + paths: + - ./vendor/bundle +jobs: + build: + executor: basic-executor + steps: + - attach_workspace: + at: '~/orangelight' - checkout + - setup-bundler - run: name: Install the NVM command: | @@ -42,33 +69,6 @@ jobs: command: | source ~/.nvm/nvm.sh curl -o- -L https://yarnpkg.com/install.sh | bash - #set timezone to est - - run: - name: Set Timezone to EST - command: echo 'America/New_York' = /etc/timezone - # Install Bundler - - run: gem install bundler -v '2.2.14' - # Restore bundle cache - - restore_cache: - keys: - - orangelight-{{ checksum "Gemfile.lock" }} - - orangelight- - # Bundle install dependencies - - run: - name: Install dependencies - command: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs 4 --retry 3 - - run: - name: Install Chrome - command: | - wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - sudo apt-get update - sudo apt-get -y install google-chrome-stable - - run: sudo apt install postgresql-client - - save_cache: - key: orangelight-{{ checksum "Gemfile.lock" }} - paths: - - ./vendor/bundle # Only necessary if app uses webpacker or yarn in some other way - restore_cache: keys: @@ -84,22 +84,41 @@ jobs: key: orangelight-{{ checksum "yarn.lock" }} paths: - ~/.cache/yarn - - run: - name: Load config into solr - command: | - cd solr/conf - zip -1 -r solr_config.zip ./* - curl -H "Content-type:application/octet-stream" --data-binary @solr_config.zip "http://solr:SolrRocks@127.0.0.1:8983/solr/admin/configs?action=UPLOAD&name=orangelight" - curl -H 'Content-type: application/json' http://solr:SolrRocks@127.0.0.1:8983/api/collections/ -d '{create: {name: orangelight-core-test, config: orangelight, numShards: 1}}' + - persist_to_workspace: + root: '~/orangelight' + paths: '*' + + test: + executor: orangelight-executor + steps: + - attach_workspace: + at: '~/orangelight' + - setup-bundler - run: name: Wait for DB command: dockerize -wait tcp://localhost:5432 -timeout 1m + - run: sudo apt install postgresql-client - run: name: Database setup command: bundle exec rake db:setup + #set timezone to est - run: - name: Run rubocop - command: bundle exec rake rubocop + name: Set Timezone to EST + command: echo 'America/New_York' = /etc/timezone + - run: + name: Install Chrome + command: | + wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + sudo apt-get update + sudo apt-get -y install google-chrome-stable + - run: + name: Load config into solr + command: | + cd solr/conf + zip -1 -r solr_config.zip ./* + curl -H "Content-type:application/octet-stream" --data-binary @solr_config.zip "http://solr:SolrRocks@127.0.0.1:8983/solr/admin/configs?action=UPLOAD&name=orangelight" + curl -H 'Content-type: application/json' http://solr:SolrRocks@127.0.0.1:8983/api/collections/ -d '{create: {name: orangelight-core-test, config: orangelight, numShards: 1}}' - run: name: Index Test Data command: bundle exec rake pulsearch:solr:index @@ -109,9 +128,22 @@ jobs: - run: name: Run JS unit tests command: bundle exec yarn test + + rubocop: + executor: basic-executor + steps: + - attach_workspace: + at: '~/orangelight' + - setup-bundler + - run: bundle exec rubocop + workflows: - version: 2 - build_accept_deploy: + build_accept: jobs: - build - + - rubocop: + requires: + - build + - test: + requires: + - build From 21e24ceb2ab9656c13d0383854a5749d8d91cf65 Mon Sep 17 00:00:00 2001 From: Eliot Jordan Date: Mon, 2 Aug 2021 16:46:10 -0500 Subject: [PATCH 7/8] Refactor BrowseLists to enable Solr auth --- lib/orangelight/browse_lists.rb | 30 +++++++++++++++---- .../browse_lists/call_number_csv_spec.rb | 17 +++++++---- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/lib/orangelight/browse_lists.rb b/lib/orangelight/browse_lists.rb index 7589675f2..fa71c208c 100644 --- a/lib/orangelight/browse_lists.rb +++ b/lib/orangelight/browse_lists.rb @@ -20,26 +20,44 @@ def connection port = config['port'] sql_command = "PGPASSWORD=#{password} psql -U #{dbuser} -h #{dbhost} -p #{port} #{dbname} -c" - # changes for different facet queries - facet_request = "#{core_url}select?q=*%3A*&fl=id&wt=json&indent=true&defType=edismax&facet.sort=asc&facet.limit=-1&facet.field=" - solr_url = Blacklight.connection_config[:url] - - conn = Faraday.new(url: solr_url) do |faraday| + conn = Faraday.new(url: solr_connection.to_s) do |faraday| faraday.options[:open_timeout] = 2000 faraday.options[:timeout] = 2000 faraday.request :url_encoded # form-encode POST params faraday.response :logger # log requests to STDOUT faraday.adapter Faraday.default_adapter # make requests with Net::HTTP + faraday.basic_auth(solr_user, solr_password) if basic_auth? # enable Solr auth end + [sql_command, facet_request, conn] end + def facet_request + "#{core_url}select?q=*%3A*&fl=id&wt=json&indent=true&defType=edismax&facet.sort=asc&facet.limit=-1&facet.field=" + end + + def solr_connection + Blacklight.default_index.connection.uri + end + + def solr_user + solr_connection.user + end + + def solr_password + solr_connection.password + end + + def basic_auth? + solr_user && solr_password + end + def output_root Pathname.new('/tmp') end def core_url - Blacklight.default_index.connection.uri.to_s.gsub(%r{^.*\/solr}, '/solr') + solr_connection.to_s.gsub(%r{^.*\/solr}, '/solr') end def browse_facet(_sql_command, facet_request, conn, facet_field, table_name) diff --git a/spec/lib/orangelight/browse_lists/call_number_csv_spec.rb b/spec/lib/orangelight/browse_lists/call_number_csv_spec.rb index b81697211..f2d7c1a6f 100644 --- a/spec/lib/orangelight/browse_lists/call_number_csv_spec.rb +++ b/spec/lib/orangelight/browse_lists/call_number_csv_spec.rb @@ -4,7 +4,14 @@ require 'orangelight/browse_lists/call_number_csv' RSpec.describe BrowseLists::CallNumberCSV do - let(:solr_url) { Blacklight.connection_config[:url] } + let(:solr_url) do + # Remove Solr auth username and password used in CI. + # Faraday adds as Base64 encoded credentials in the + # Authorization header. Causes issues with webmocks + uri = Blacklight.default_index.connection.uri.dup + uri.user = nil + uri.to_s + end describe "#write" do let(:output_root) { Rails.root.join("tmp", "spec") } @@ -14,17 +21,17 @@ WebMock.disable_net_connect! stub_request( - :get, "#{solr_url}/select?defType=edismax&facet.field=call_number_browse_s&facet.limit=-1&facet.mincount=2&facet.sort=asc&fl=id&indent=true&q=*:*&wt=json" + :get, "#{solr_url}select?defType=edismax&facet.field=call_number_browse_s&facet.limit=-1&facet.mincount=2&facet.sort=asc&fl=id&indent=true&q=*:*&wt=json" ) .to_return(status: 200, body: file_fixture("call_number_browse/multi_call_numbers.json"), headers: {}) stub_request( - :get, "#{solr_url}/select?cursorMark=*&defType=edismax&facet=false&fl=call_number_browse_s,title_display,title_vern_display,author_display,author_s,id,pub_created_vern_display,pub_created_display,holdings_1display&indent=true&q=*:*&rows=500&sort=id%20asc&wt=json" + :get, "#{solr_url}select?cursorMark=*&defType=edismax&facet=false&fl=call_number_browse_s,title_display,title_vern_display,author_display,author_s,id,pub_created_vern_display,pub_created_display,holdings_1display&indent=true&q=*:*&rows=500&sort=id%20asc&wt=json" ) .to_return(status: 200, body: file_fixture("call_number_browse/index_entries_rows500_cursor_p1.json"), headers: {}) stub_request( - :get, "#{solr_url}/select?cursorMark=AoEoMTAwMDA1NjY=&defType=edismax&facet=false&fl=call_number_browse_s,title_display,title_vern_display,author_display,author_s,id,pub_created_vern_display,pub_created_display,holdings_1display&indent=true&q=*:*&rows=500&sort=id%20asc&wt=json" + :get, "#{solr_url}select?cursorMark=AoEoMTAwMDA1NjY=&defType=edismax&facet=false&fl=call_number_browse_s,title_display,title_vern_display,author_display,author_s,id,pub_created_vern_display,pub_created_display,holdings_1display&indent=true&q=*:*&rows=500&sort=id%20asc&wt=json" ) .to_return(status: 200, body: file_fixture("call_number_browse/index_entries_rows500_cursor_p2.json"), headers: {}) end @@ -57,7 +64,7 @@ before do allow(Rails.logger).to receive(:error) stub_request( - :get, "#{solr_url}/select?cursorMark=*&defType=edismax&facet=false&fl=call_number_browse_s,title_display,title_vern_display,author_display,author_s,id,pub_created_vern_display,pub_created_display,holdings_1display&indent=true&q=*:*&rows=500&sort=id%20asc&wt=json" + :get, "#{solr_url}select?cursorMark=*&defType=edismax&facet=false&fl=call_number_browse_s,title_display,title_vern_display,author_display,author_s,id,pub_created_vern_display,pub_created_display,holdings_1display&indent=true&q=*:*&rows=500&sort=id%20asc&wt=json" ) .to_return(status: 200, body: {}.to_json, headers: {}) end From 75a79ac210531ec23b62addc6d0f8c309a6370d5 Mon Sep 17 00:00:00 2001 From: Eliot Jordan Date: Tue, 3 Aug 2021 11:57:39 -0500 Subject: [PATCH 8/8] Remove solr_wrapper --- .solr_wrapper | 1 - Gemfile | 1 - Gemfile.lock | 7 ----- README.md | 10 ++++++- Rakefile | 4 --- lib/tasks/server.rake | 66 +++---------------------------------------- 6 files changed, 13 insertions(+), 76 deletions(-) delete mode 100644 .solr_wrapper diff --git a/.solr_wrapper b/.solr_wrapper deleted file mode 100644 index f50133d5a..000000000 --- a/.solr_wrapper +++ /dev/null @@ -1 +0,0 @@ -version: 8.4.1 \ No newline at end of file diff --git a/Gemfile b/Gemfile index d1b75bcb0..6ff8ce872 100644 --- a/Gemfile +++ b/Gemfile @@ -55,7 +55,6 @@ gem 'faraday', '~> 0.17' gem 'faraday-cookie_jar' gem 'global' gem 'omniauth-cas' -gem 'solr_wrapper', '~> 2.0' gem 'yajl-ruby', '>= 1.3.1', require: 'yajl' gem 'babel-transpiler' diff --git a/Gemfile.lock b/Gemfile.lock index 29b8aae8e..88a623130 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -400,7 +400,6 @@ GEM responders (3.0.1) actionpack (>= 5.0) railties (>= 5.0) - retriable (3.1.2) reverse_markdown (1.4.0) nokogiri rsolr (2.2.1) @@ -494,11 +493,6 @@ GEM thor (~> 0.19, >= 0.19.4) tilt (~> 2.0) yard (~> 0.9) - solr_wrapper (2.2.0) - faraday - retriable - ruby-progressbar - rubyzip spring (2.1.0) sprockets (3.7.2) concurrent-ruby (~> 1.0) @@ -628,7 +622,6 @@ DEPENDENCIES sitemap_generator (~> 6.0) sneakers solargraph - solr_wrapper (~> 2.0) spring sprockets-es6 string_rtl diff --git a/README.md b/README.md index 3ddc90a8f..8ef6031f4 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,14 @@ it to the bottom of `spec/fixtures/current_fixtures.json`. Note that file contains a list so you have to make sure you add a comma to the end of the last record and keep the closing bracket at the end of the file. Then run `rake pulsearch:solr:index` for both the dev and the test environment, as specified above. +## Update Solr configuration + +Run the following command to update pull in Solr configuration updates from the pul_solr repo: + +```bash +rake pulsearch:solr:update +``` + ## Local development with Figgy Orangelight is configured to use two environment variables in order to query and retrieve [IIIF Manifests](https://iiif.io/api/presentation/2.1/#manifest) for resources linked to catalog records in the [Figgy digital object repository](https://github.com/pulibrary/figgy). By default, these are provided with the following values: @@ -110,7 +118,7 @@ GRAPHQL_API_URL=https://figgy-staging.princeton.edu/graphql FIGGY_URL=https://fi To start up a copy of the project with a solr index of fixture data ```bash -bundle exec rake server +rake servers:start ``` Then, in another terminal window build browse index csv files in /tmp: ```bash diff --git a/Rakefile b/Rakefile index a6ea8a7be..100435196 100644 --- a/Rakefile +++ b/Rakefile @@ -3,7 +3,6 @@ require File.expand_path('../config/application', __FILE__) require 'rubocop/rake_task' if Rails.env.development? || Rails.env.test? -require 'solr_wrapper/rake_task' require 'honeybadger/init/ruby' require 'sneakers/tasks' @@ -19,6 +18,3 @@ if defined? RuboCop desc 'Run test suite and style checker' task spec: :rubocop end - -Rake::Task[:default].clear -task default: :ci diff --git a/lib/tasks/server.rake b/lib/tasks/server.rake index 1d9871e2d..787f0feca 100644 --- a/lib/tasks/server.rake +++ b/lib/tasks/server.rake @@ -1,20 +1,5 @@ # frozen_string_literal: true -require 'solr_wrapper' - -desc 'Run test suite' -task :ci do - if Rails.env.test? - run_solr('test', port: '8985') do - Rake::Task['pulsearch:solr:index'].invoke - Rake::Task['spec'].invoke - Rake::Task['yarn:test'].invoke - end - else - system('rake ci RAILS_ENV=test') - end -end - namespace :yarn do desc 'Run jest tests' task :test do @@ -22,14 +7,6 @@ namespace :yarn do end end -desc 'Run solr and orangelight for interactive development' -task :server, [:rails_server_args] do |_t, args| - run_solr('development', port: '8983') do - Rake::Task['pulsearch:solr:index'].invoke - system "bundle exec rails s #{args[:rails_server_args]}" - end -end - namespace :servers do task initialize: :environment do Rake::Task["db:create"].invoke @@ -40,7 +17,6 @@ namespace :servers do desc "Start the Apache Solr and PostgreSQL container services using Lando." task start: :environment do - Rake::Task["pulsearch:solr:update"].invoke system("lando start") system("rake servers:initialize") system("rake servers:initialize RAILS_ENV=test") @@ -55,51 +31,17 @@ end namespace :server do desc 'Run development solr' task :dev do - if ENV["lando_orangelight_development_solr_conn_port"] - Rake::Task['pulsearch:solr:index'].invoke - puts("Indexing to Lando. Running at http://localhost:#{ENV['lando_orangelight_development_solr_conn_port']}") - else - run_solr('development', port: '8983') do - Rake::Task['pulsearch:solr:index'].invoke - sleep - end - end + Rake::Task['pulsearch:solr:index'].invoke + puts("Indexing to Lando. Running at http://localhost:#{ENV['lando_orangelight_development_solr_conn_port']}") end desc 'Run test solr' task :test do if Rails.env.test? - if ENV["lando_orangelight_test_solr_conn_port"] - Rake::Task['pulsearch:solr:index'].invoke - puts("Indexing to Lando. Running at http://localhost:#{ENV['lando_orangelight_test_solr_conn_port']}") - else - run_solr('test', port: '8888') do - Rake::Task['pulsearch:solr:index'].invoke - sleep - end - end + Rake::Task['pulsearch:solr:index'].invoke + puts("Indexing to Lando. Running at http://localhost:#{ENV['lando_orangelight_test_solr_conn_port']}") else system('rake server:test RAILS_ENV=test') end end end - -def run_solr(environment, solr_params) - solr_dir = File.join(File.expand_path('.', File.dirname(__FILE__)), '../../', 'solr') - SolrWrapper.wrap(solr_params) do |solr| - ENV['SOLR_TEST_PORT'] = solr.port - - # additional solr configuration - Rake::Task['pulsearch:solr:update'].invoke(solr_dir) - solr.with_collection(name: "orangelight-core-#{environment}", dir: File.join(solr_dir, 'conf')) do - puts "\n#{environment.titlecase} solr server running: http://localhost:#{solr.port}/solr/#/orangelight-core-#{environment}" - puts "\n^C to stop" - puts ' ' - begin - yield - rescue Interrupt - puts 'Shutting down...' - end - end - end -end