You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2020/08/12 14:46:04 UTC

[lucene-solr] branch branch_8x updated: SOLR-13751: add BooleanSimilarityFactory (#867)

This is an automated email from the ASF dual-hosted git repository.

cpoerschke pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/branch_8x by this push:
     new 1145362  SOLR-13751: add BooleanSimilarityFactory (#867)
1145362 is described below

commit 1145362a248aea6ea56189c10279a23efd3e988a
Author: andywebb1975 <an...@bbc.co.uk>
AuthorDate: Wed Aug 12 15:35:50 2020 +0100

    SOLR-13751: add BooleanSimilarityFactory (#867)
---
 solr/CHANGES.txt                                   |  2 ++
 .../similarities/BooleanSimilarityFactory.java     | 36 ++++++++++++++++++++
 .../collection1/conf/schema-booleansimilarity.xml  | 35 +++++++++++++++++++
 .../similarities/TestBooleanSimilarityFactory.java | 39 ++++++++++++++++++++++
 4 files changed, 112 insertions(+)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 564b0e3..099e17d 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -20,6 +20,8 @@ New Features
 * SOLR-14582: Expose IWC.setMaxCommitMergeWaitMillis in Solr's index config. This is an expert config option that can be
   set when using a custom MergePolicy (doesn't have any effect on the default MP) (Tomás Fernández Löbbe)
 
+* SOLR-13751: Add BooleanSimilarityFactory class. (Andy Webb via Christine Poerschke)
+
 Improvements
 ---------------------
 
diff --git a/solr/core/src/java/org/apache/solr/search/similarities/BooleanSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/BooleanSimilarityFactory.java
new file mode 100644
index 0000000..0e46e32
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/search/similarities/BooleanSimilarityFactory.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package org.apache.solr.search.similarities;
+
+import org.apache.lucene.search.similarities.BooleanSimilarity;
+import org.apache.lucene.search.similarities.Similarity;
+import org.apache.solr.schema.SimilarityFactory;
+
+/**
+ * Factory for {@link BooleanSimilarity}
+ *
+ * Simple similarity that gives terms a score that is equal to their query
+ * boost. This similarity is typically used with disabled norms since neither
+ * document statistics nor index statistics are used for scoring.
+ */
+public class BooleanSimilarityFactory extends SimilarityFactory {
+  
+  @Override
+  public Similarity getSimilarity() {
+    return new BooleanSimilarity();
+  }
+}
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-booleansimilarity.xml b/solr/core/src/test-files/solr/collection1/conf/schema-booleansimilarity.xml
new file mode 100644
index 0000000..3f7a2c1
--- /dev/null
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-booleansimilarity.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ 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.
+-->
+
+<!-- Test schema file for BooleanSimilarityFactory -->
+
+<schema name="booleansimilarity" version="1.0">
+  <fieldType name="string" class="solr.StrField" omitNorms="true" positionIncrementGap="0"/>
+
+  <fieldType name="text" class="solr.TextField">
+    <analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
+    <similarity class="solr.BooleanSimilarityFactory"/>
+  </fieldType>
+
+  <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="false"/>
+  <field name="text" type="text" indexed="true" stored="false"/>
+
+  <uniqueKey>id</uniqueKey>
+
+</schema>
+
diff --git a/solr/core/src/test/org/apache/solr/search/similarities/TestBooleanSimilarityFactory.java b/solr/core/src/test/org/apache/solr/search/similarities/TestBooleanSimilarityFactory.java
new file mode 100644
index 0000000..23e7d11
--- /dev/null
+++ b/solr/core/src/test/org/apache/solr/search/similarities/TestBooleanSimilarityFactory.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.solr.search.similarities;
+
+import org.apache.lucene.search.similarities.BooleanSimilarity;
+import org.junit.BeforeClass;
+
+/**
+ * Tests {@link BooleanSimilarityFactory} when specified on a per-fieldtype basis.
+ * @see SchemaSimilarityFactory
+ */
+public class TestBooleanSimilarityFactory extends BaseSimilarityTestCase {
+
+  @BeforeClass
+  public static void beforeClass() throws Exception {
+    initCore("solrconfig-basic.xml","schema-booleansimilarity.xml");
+  }
+  
+  /** Boolean w/ default parameters */
+  public void testDefaults() throws Exception {
+    BooleanSimilarity sim = getSimilarity("text", BooleanSimilarity.class);
+    assertEquals(BooleanSimilarity.class, sim.getClass());
+  }
+
+}