[open-ils-commits] [GIT] Evergreen ILS branch master updated. b83e736ab52d4c35cf770e9143661898831d509c

Evergreen Git git at git.evergreen-ils.org
Thu Apr 18 13:47:06 EDT 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, master has been updated
       via  b83e736ab52d4c35cf770e9143661898831d509c (commit)
       via  6a79670ff595cf21737a62024f8fb154c488fbd3 (commit)
      from  3eb7f405e80743167163f94036e0ef9f38f945d7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit b83e736ab52d4c35cf770e9143661898831d509c
Author: Ben Shum <bshum at biblio.org>
Date:   Thu Apr 18 13:45:54 2013 -0400

    Stamping upgrade script for optional combined search by class
    
    Signed-off-by: Ben Shum <bshum at biblio.org>

diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index f10ad3d..55b6ad5 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -91,7 +91,7 @@ CREATE TRIGGER no_overlapping_deps
     BEFORE INSERT OR UPDATE ON config.db_patch_dependencies
     FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
 
-INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0789', :eg_version); -- miker/dyrcona
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0790', :eg_version); -- miker/bshum
 
 CREATE TABLE config.bib_source (
 	id		SERIAL	PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/upgrade/0790.schema.optional_combined_search.sql b/Open-ILS/src/sql/Pg/upgrade/0790.schema.optional_combined_search.sql
new file mode 100644
index 0000000..79d02af
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/0790.schema.optional_combined_search.sql
@@ -0,0 +1,8 @@
+BEGIN;
+
+SELECT evergreen.upgrade_deps_block_check('0790', :eg_version);
+
+ALTER TABLE config.metabib_class ADD COLUMN combined BOOL NOT NULL DEFAULT FALSE;
+UPDATE config.metabib_class SET combined = TRUE WHERE name = 'subject';
+
+COMMIT;
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.optional_combined_search.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.optional_combined_search.sql
deleted file mode 100644
index 2cab404..0000000
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.optional_combined_search.sql
+++ /dev/null
@@ -1,4 +0,0 @@
-
-ALTER TABLE config.metabib_class ADD COLUMN combined BOOL NOT NULL DEFAULT FALSE;
-UPDATE config.metabib_class SET combined = TRUE WHERE name = 'subject';
-

commit 6a79670ff595cf21737a62024f8fb154c488fbd3
Author: Mike Rylander <mrylander at gmail.com>
Date:   Tue Apr 16 15:08:10 2013 -0400

    Allow combined search to be optional per class
    
    Relevance is thrown off for, in paticular, the keyword class when combined
    search is used.  This is because the effect of an opaque blob of data, such
    as the keyword|keyword index definition, is to applify the inclusion of spurious
    (to the user) data in matching attempts.
    
    This commit adds the ability to specify, per class, whether combined FTS should
    be used, and turns this on for only the subject class by default.
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>
    Signed-off-by: Ben Shum <bshum at biblio.org>

diff --git a/Open-ILS/examples/fm_IDL.xml b/Open-ILS/examples/fm_IDL.xml
index 1b7cee5..44f34a2 100644
--- a/Open-ILS/examples/fm_IDL.xml
+++ b/Open-ILS/examples/fm_IDL.xml
@@ -2345,6 +2345,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
 			<field reporter:label="Label" name="label" reporter:datatype="text" oils_persist:i18n="true"/>
 			<field reporter:label="Buoyant?" name="buoyant" reporter:datatype="bool" />
 			<field reporter:label="Restrict?" name="restrict" reporter:datatype="bool" />
+			<field reporter:label="Combined?" name="combined" reporter:datatype="bool" />
 			<field reporter:label="A Weight" name="a_weight" reporter:datatype="float" />
 			<field reporter:label="B Weight" name="b_weight" reporter:datatype="float" />
 			<field reporter:label="C Weight" name="c_weight" reporter:datatype="float" />
diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
index f69755a..d350eda 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
@@ -217,6 +217,7 @@ sub add_search_field_id_map {
     my $field = shift;
     my $id = shift;
     my $weight = shift;
+    my $combined = shift;
 
     $self->add_search_field( $class => $field );
     $self->search_field_id_map->{by_id}{$id} = { classname => $class, field => $field, weight => $weight };
@@ -300,6 +301,18 @@ sub search_class_weights {
     return $self->custom_data->{class_weights}->{$class};
 }
 
+sub search_class_combined {
+    my $self = shift;
+    my $class = shift;
+    my $c = shift;
+
+    $self->custom_data->{class_combined} ||= {};
+    # Note: This reverses the A-D order, putting D first, because that is how the call actually works in PG
+    $self->custom_data->{class_combined}->{$class} ||= 0;
+    $self->custom_data->{class_combined}->{$class} = 1 if $c && $c =~ /^(?:t|y|1)/i;
+    return $self->custom_data->{class_combined}->{$class};
+}
+
 sub class_ts_config {
     my $self = shift;
     my $class = shift;
@@ -425,12 +438,13 @@ sub initialize_filter_normalizers {
     }
 }
 
-sub initialize_class_weights {
+sub initialize_search_class_weights {
     my $self = shift;
     my $classes = shift;
 
     for my $search_class (@$classes) {
         __PACKAGE__->search_class_weights( $search_class->name, $search_class->a_weight, $search_class->b_weight, $search_class->c_weight, $search_class->d_weight );
+        __PACKAGE__->search_class_combined( $search_class->name, $search_class->combined );
     }
 }
 
@@ -839,13 +853,17 @@ sub flatten {
                 if ($node->dummy_count < @{$node->only_atoms} ) {
                     $with .= ",\n     " if $with;
                     $with .= "${talias}_xq AS (SELECT ". $node->tsquery ." AS tsq,". $node->tsquery_rank ." AS tsq_rank )";
-                    $from .= "\n" . ${spc} x 6 . "JOIN $ctable AS com ON (com.record = fe.source";
-                    if (@field_ids) {
-                        $from .= " AND com.metabib_field IN (" . join(',', at field_ids) . "))";
+                    if ($node->combined_search) {
+                        $from .= "\n" . ${spc} x 6 . "JOIN $ctable AS com ON (com.record = fe.source";
+                        if (@field_ids) {
+                            $from .= " AND com.metabib_field IN (" . join(',', at field_ids) . "))";
+                        } else {
+                            $from .= " AND com.metabib_field IS NULL)";
+                        }
+                        $from .= "\n" . ${spc} x 6 . "JOIN ${talias}_xq ON (com.index_vector @@ ${talias}_xq.tsq)";
                     } else {
-                        $from .= " AND com.metabib_field IS NULL)";
+                        $from .= "\n" . ${spc} x 6 . "JOIN ${talias}_xq ON (fe.index_vector @@ ${talias}_xq.tsq)";
                     }
-                    $from .= "\n" . ${spc} x 6 . "JOIN ${talias}_xq ON (com.index_vector @@ ${talias}_xq.tsq)";
                 } else {
                     $from .= "\n" . ${spc} x 6 . ", (SELECT NULL::tsquery AS tsq, NULL:tsquery AS tsq_rank ) AS ${talias}_xq";
                 }
@@ -1324,6 +1342,11 @@ sub combined_table {
     return $self->combined_table( 'metabib.combined_' . $self->classname . '_field_entry' );
 }
 
+sub combined_search {
+    my $self = shift;
+    return $self->plan->QueryParser->search_class_combined($self->classname);
+}
+
 sub table_alias {
     my $self = shift;
     my $table_alias = shift;
diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index 946ac79..f10ad3d 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -174,6 +174,7 @@ CREATE TABLE config.metabib_class (
     label    TEXT    NOT NULL UNIQUE,
     buoyant  BOOL    DEFAULT FALSE NOT NULL,
     restrict BOOL    DEFAULT FALSE NOT NULL,
+    combined BOOL    DEFAULT FALSE NOT NULL,
     a_weight NUMERIC  DEFAULT 1.0 NOT NULL,
     b_weight NUMERIC  DEFAULT 0.4 NOT NULL,
     c_weight NUMERIC  DEFAULT 0.2 NOT NULL,
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.optional_combined_search.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.optional_combined_search.sql
new file mode 100644
index 0000000..2cab404
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.optional_combined_search.sql
@@ -0,0 +1,4 @@
+
+ALTER TABLE config.metabib_class ADD COLUMN combined BOOL NOT NULL DEFAULT FALSE;
+UPDATE config.metabib_class SET combined = TRUE WHERE name = 'subject';
+

-----------------------------------------------------------------------

Summary of changes:
 Open-ILS/examples/fm_IDL.xml                       |    1 +
 .../Application/Storage/Driver/Pg/QueryParser.pm   |   35 ++++++++++++++++---
 Open-ILS/src/sql/Pg/002.schema.config.sql          |    3 +-
 .../0790.schema.optional_combined_search.sql       |    8 ++++
 4 files changed, 40 insertions(+), 7 deletions(-)
 create mode 100644 Open-ILS/src/sql/Pg/upgrade/0790.schema.optional_combined_search.sql


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list