Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37603198
en ru br
Репозитории ALT
S:6.0.2-alt5
5.1: 5.1.1-alt3
4.1: 4.1.2-alt4.M41.1
4.0: 4.1.2-alt5.M40.1
3.0: 3.0-alt1
www.altlinux.org/Changes

Группа :: Науки/Математика
Пакет: scilab

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: scilab-bug-15451.patch
Скачать


commit b82ae59df5db3188c331cbdd2a281341297eafda
Author: Clement David <clement.david@esi-group.com>
Date:   Wed Jan 15 11:57:58 2020 +0100
    * Bug 15451 fixed: reduce Lucene API usage
    
    This commit has been checked with lucene 8.4.0 and 5.2.1.
    
     http://bugzilla.scilab.org/15451
    
    Change-Id: I9f49d3a2bf9f882fe58f571d7acbcd74cc0a5773
diff --git a/scilab/etc/classpath.xml.vc b/scilab/etc/classpath.xml.vc
index 7ca970baf97..ec367d98d03 100644
--- a/scilab/etc/classpath.xml.vc
+++ b/scilab/etc/classpath.xml.vc
@@ -33,9 +33,9 @@ The option is "disableUnderMode" and can be:
     <path value="$SCILAB/thirdparty/looks-2.1.1.jar"/>
     <path value="$SCILAB/thirdparty/commons-logging.jar"/>
     <path value="$SCILAB/thirdparty/jhall.jar"/>
-    <path value="$SCILAB/thirdparty/lucene-core-5.2.1.jar"/>
-    <path value="$SCILAB/thirdparty/lucene-analyzers-common-5.2.1.jar"/>
-    <path value="$SCILAB/thirdparty/lucene-queryparser-5.2.1.jar"/>
+    <path value="$SCILAB/thirdparty/lucene-core-8.4.0.jar"/>
+    <path value="$SCILAB/thirdparty/lucene-analyzers-common-8.4.0.jar"/>
+    <path value="$SCILAB/thirdparty/lucene-queryparser-8.4.0.jar"/>
 
     <!-- Load when needed -->
 
diff --git a/scilab/modules/helptools/helptools.iss b/scilab/modules/helptools/helptools.iss
index 137573891f2..0c8a60805f6 100644
--- a/scilab/modules/helptools/helptools.iss
+++ b/scilab/modules/helptools/helptools.iss
@@ -47,9 +47,9 @@ Source: thirdparty\xml-apis.jar;DestDir: {app}\thirdparty; Components: {#COMPN_S
 Source: thirdparty\xml-apis-ext.jar;DestDir: {app}\thirdparty; Components: {#COMPN_SCILAB} and {#COMPN_JVM_MODULE}
 Source: thirdparty\xmlgraphics-commons.jar;DestDir: {app}\thirdparty; Components: {#COMPN_SCILAB} and {#COMPN_JVM_MODULE}
 Source: thirdparty\batik-all.jar;DestDir: {app}\thirdparty; Components: {#COMPN_SCILAB} and {#COMPN_JVM_MODULE}
-Source: thirdparty\lucene-analyzers-common-5.2.1.jar;DestDir: {app}\thirdparty; Components: {#COMPN_SCILAB} and {#COMPN_JVM_MODULE}
-Source: thirdparty\lucene-core-5.2.1.jar;DestDir: {app}\thirdparty; Components: {#COMPN_SCILAB} and {#COMPN_JVM_MODULE}
-Source: thirdparty\lucene-queryparser-5.2.1.jar;DestDir: {app}\thirdparty; Components: {#COMPN_SCILAB} and {#COMPN_JVM_MODULE}
+Source: thirdparty\lucene-analyzers-common-8.4.0.jar;DestDir: {app}\thirdparty; Components: {#COMPN_SCILAB} and {#COMPN_JVM_MODULE}
+Source: thirdparty\lucene-core-8.4.0.jar;DestDir: {app}\thirdparty; Components: {#COMPN_SCILAB} and {#COMPN_JVM_MODULE}
+Source: thirdparty\lucene-queryparser-8.4.0.jar;DestDir: {app}\thirdparty; Components: {#COMPN_SCILAB} and {#COMPN_JVM_MODULE}
 ;
 Source: modules\{#HELPTOOLS}\license.txt; DestDir: {app}\modules\{#HELPTOOLS}; Components: {#COMPN_SCILAB} and {#COMPN_JVM_MODULE}
 ;
diff --git a/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteIndexer.java b/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteIndexer.java
index d31a0a7c356..455353270d3 100644
--- a/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteIndexer.java
+++ b/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteIndexer.java
@@ -24,6 +24,7 @@ import java.nio.file.Path;
 import java.nio.file.SimpleFileVisitor;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -70,11 +71,8 @@ public final class PaletteIndexer {
     public void createIndex(Map<String, PaletteBlock> blockNameToPalette) {
         try {
             mgr.getIndexWriter().deleteAll();
-
-            // insert all block names
-            for (String blk : blockNameToPalette.keySet()) {
-                index(blk);
-            }
+            
+            HashSet<String> blocks = new HashSet<>(blockNameToPalette.keySet());
 
             // insert all help pages
             for (File r : roots) {
@@ -98,7 +96,8 @@ public final class PaletteIndexer {
                             }
                         } else if (fname.endsWith(".html")) {
                             // this is a regular file
-                            if (blockNameToPalette.containsKey(basename)) {
+                            if (blocks.contains(basename)) {
+                                blocks.remove(basename);
                                 index(basename, file.toUri().toURL());
                             }
                         }
@@ -107,6 +106,11 @@ public final class PaletteIndexer {
                     }
                 });
             }
+            
+            // insert all missing block names
+            for (String blk : blocks) {
+                index(blk);
+            }
 
             mgr.getIndexWriter().commit();
         } catch (IOException ex) {
@@ -161,8 +165,7 @@ public final class PaletteIndexer {
             Document doc = new Document();
 
             // add the block name
-            Field refname = new TextField("refname", basename, Field.Store.YES);
-            refname.setBoost(100f);
+            Field refname = new StringField("refname", basename, Field.Store.YES);
             doc.add(refname);
 
             // add the refpurpose
@@ -171,21 +174,20 @@ public final class PaletteIndexer {
 
                 Field refpurpose;
                 if (found.isPresent()) {
-                    refpurpose = new TextField("refpurpose", found.get(), Field.Store.YES);
+                    refpurpose = new TextField("refpurpose", found.get(), Field.Store.NO);
                 } else {
-                    refpurpose = new TextField("refpurpose", "", Field.Store.YES);
+                    refpurpose = new TextField("refpurpose", "", Field.Store.NO);
                 }
 
-                refpurpose.setBoost(10f);
                 doc.add(refpurpose);
             }
 
             // add the html content
             try (BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()))) {
                 doc.add(new TextField("content", r));
-            }
 
-            mgr.getIndexWriter().addDocument(doc);
+		mgr.getIndexWriter().addDocument(doc);
+            }
         } catch (IOException e) {
             Logger.getLogger(PaletteIndexer.class.getName()).log(Level.SEVERE, null, e);
         }
@@ -195,8 +197,8 @@ public final class PaletteIndexer {
         try {
             Document doc = new Document();
             doc.add(new StringField("refname", block, Field.Store.YES));
-            doc.add(new StringField("refpurpose", block, Field.Store.YES));
-            doc.add(new TextField("content", block, Field.Store.YES));
+            doc.add(new TextField("refpurpose", block, Field.Store.NO));
+            doc.add(new TextField("content", block, Field.Store.NO));
 
             mgr.getIndexWriter().addDocument(doc);
         } catch (IOException e) {
diff --git a/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteSearchManager.java b/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteSearchManager.java
index 16516d75100..1325ad2e656 100644
--- a/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteSearchManager.java
+++ b/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteSearchManager.java
@@ -15,11 +15,16 @@ package org.scilab.modules.xcos.palette;
 
 import java.io.File;
 import java.io.IOException;
+import static java.util.Comparator.reverseOrder;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import static java.util.Map.Entry.comparingByValue;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import static java.util.stream.Collectors.counting;
+import static java.util.stream.Collectors.groupingBy;
+import static java.util.stream.Collectors.toList;
 
 import javax.swing.JScrollPane;
 import javax.swing.tree.TreeModel;
@@ -94,14 +99,24 @@ public final class PaletteSearchManager {
             indexIsOutdated = false;
         }
 
-        List<Document> found = paletteSearcher.search(query);
-        for (Document doc : found) {
-            PaletteBlock block = nameToPalette.get(doc.get("refname"));
+        List<Document> found = paletteSearcher.search(query.toLowerCase());
+        // sort results per maximum frequency of the block name
+        Map<String, Long> freq = found.stream()
+                .map(doc -> doc.get("refname"))
+                .collect(groupingBy(x->x, counting()));
+        List<String> foundNames = freq.entrySet()
+                .stream()
+                .sorted(comparingByValue(reverseOrder()))
+                .map(Map.Entry::getKey)
+                .collect(toList());
+        
+        for (String b : foundNames) {
+            PaletteBlock block = nameToPalette.get(b);
             if (block != null) {
                 view.addBlock(block);
             }
         }
-        view.setText(queryLabel + found.size() + " " + XcosMessages.MATCHES);
+        view.setText(queryLabel + foundNames.size() + " " + XcosMessages.MATCHES);
         view.revalidate();
         scrollPane.revalidate();
     }
diff --git a/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteSearcher.java b/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteSearcher.java
index 26490582834..334c3e51cfb 100644
--- a/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteSearcher.java
+++ b/scilab/modules/xcos/src/java/org/scilab/modules/xcos/palette/PaletteSearcher.java
@@ -51,13 +51,13 @@ public final class PaletteSearcher {
      * @return paths to the found blocks
      */
     public List<Document> search(String str) {
-        List<Document> found = new ArrayList<>();
+        
+        ArrayList<Document> found = new ArrayList<>();
         try (IndexReader reader = DirectoryReader.open(mgr.getDirectory())) {
             IndexSearcher searcher = new IndexSearcher(reader);
 
             StandardQueryParser queryParserHelper = new StandardQueryParser();
             queryParserHelper.setAllowLeadingWildcard(true);
-            queryParserHelper.setLowercaseExpandedTerms(true);
             queryParserHelper.setAnalyzer(mgr.getAnalyzer());
             queryParserHelper.setMultiFields(new String[] {"refname", "refpurpose", "content"});
 
@@ -78,6 +78,7 @@ public final class PaletteSearcher {
         } catch (IOException | QueryNodeException e) {
             Logger.getLogger(PaletteSearcher.class.getName()).log(Level.SEVERE, null, e);
         }
+        
         return found;
     }
 }
diff --git a/scilab/scilab-lib.properties.vc b/scilab/scilab-lib.properties.vc
index c3390dddd57..708f4d23d84 100644
--- a/scilab/scilab-lib.properties.vc
+++ b/scilab/scilab-lib.properties.vc
@@ -18,11 +18,11 @@ jogl2.jar=${thirdparty.dir}/jogl2.jar
 
 jhall.jar=${thirdparty.dir}/jhall.jar
 
-lucene-core.jar=${thirdparty.dir}/lucene-core-5.2.1.jar
+lucene-core.jar=${thirdparty.dir}/lucene-core-8.4.0jar
 
-lucene-analyzers-common.jar=${thirdparty.dir}/lucene-analyzers-common-5.2.1.jar
+lucene-analyzers-common.jar=${thirdparty.dir}/lucene-analyzers-common-8.4.0.jar
 
-lucene-queryparser.jar=${thirdparty.dir}/lucene-queryparser-5.2.1.jar
+lucene-queryparser.jar=${thirdparty.dir}/lucene-queryparser-8.4.0.jar
 
 gluegen2.jar=${thirdparty.dir}/gluegen2-rt.jar
 
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin