Skip to content

Commit 7d5c894

Browse files
authored
Merge pull request #1429 from tarzanek/master
final fix #1376 symbols search works like full text search
2 parents a353e98 + bdcdf76 commit 7d5c894

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+344
-122
lines changed

nbproject/project.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ build.generated.dir=${build.dir}/generated
1919
run.classpath=\
2020
${javac.classpath}:\
2121
${build.classes.dir}
22-
lucene.version=6.4.0
22+
lucene.version=6.4.1
2323
lucene-core.jar=lucene-core-${lucene.version}.jar
2424
file.reference.opengrok-dev-test=test
2525
debug.test.classpath=${run.test.classpath}

opengrok-indexer/pom.xml

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
2222
2323
-->
2424
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
25-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
25+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
2626
<modelVersion>4.0.0</modelVersion>
2727
<groupId>org.opensolaris.opengrok</groupId>
2828
<artifactId>opengrok-indexer</artifactId>
@@ -45,27 +45,29 @@ Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
4545
<targetPath>org/opensolaris/opengrok/analysis/sql/</targetPath>
4646
<directory>../src/org/opensolaris/opengrok/analysis/sql/</directory>
4747
<includes>
48-
<include>*.dat</include>
48+
<include>*.dat</include>
4949
</includes>
5050
</resource>
5151
<resource>
5252
<targetPath>org/opensolaris/opengrok/analysis/vb/</targetPath>
5353
<directory>../src/org/opensolaris/opengrok/analysis/vb/</directory>
5454
<includes>
55-
<include>*.dat</include>
55+
<include>*.dat</include>
5656
</includes>
5757
</resource>
5858
<resource>
5959
<targetPath>org/opensolaris/opengrok/index/</targetPath>
6060
<directory>../src/org/opensolaris/opengrok/index/</directory>
61-
<excludes><exclude>*.java</exclude></excludes>
61+
<excludes>
62+
<exclude>*.java</exclude>
63+
</excludes>
6264
</resource>
6365
<resource>
6466
<targetPath>org/opensolaris/opengrok/history/</targetPath>
6567
<directory>../src/org/opensolaris/opengrok/history/</directory>
6668
<excludes>
67-
<exclude>*.java</exclude>
68-
<exclude>*.html</exclude>
69+
<exclude>*.java</exclude>
70+
<exclude>*.html</exclude>
6971
</excludes>
7072
</resource>
7173
</resources>
@@ -74,17 +76,30 @@ Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
7476
<testResource>
7577
<targetPath>org/opensolaris/opengrok/history/</targetPath>
7678
<directory>../test/org/opensolaris/opengrok/history/</directory>
77-
<excludes><exclude>*.java</exclude></excludes>
79+
<excludes>
80+
<exclude>*.java</exclude>
81+
</excludes>
7882
</testResource>
7983
<testResource>
8084
<targetPath>org/opensolaris/opengrok/analysis/php/</targetPath>
8185
<directory>../test/org/opensolaris/opengrok/analysis/php/</directory>
82-
<excludes><exclude>*.java</exclude></excludes>
86+
<excludes>
87+
<exclude>*.java</exclude>
88+
</excludes>
8389
</testResource>
8490
<testResource>
8591
<targetPath>org/opensolaris/opengrok/analysis/haskell/</targetPath>
8692
<directory>../test/org/opensolaris/opengrok/analysis/haskell/</directory>
87-
<excludes><exclude>*.java</exclude></excludes>
93+
<excludes>
94+
<exclude>*.java</exclude>
95+
</excludes>
96+
</testResource>
97+
<testResource>
98+
<targetPath>org/opensolaris/opengrok/analysis/java/</targetPath>
99+
<directory>../test/org/opensolaris/opengrok/analysis/java/</directory>
100+
<excludes>
101+
<exclude>*.java</exclude>
102+
</excludes>
88103
</testResource>
89104
</testResources>
90105

@@ -131,7 +146,7 @@ Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
131146
</execution>
132147
</executions>
133148
</plugin>
134-
<!-- TODO add the same fix as is in build.xml to patch jflex generated files to stop increasing buffer beyond token size that lucene accepts
149+
<!-- TODO add the same fix as is in build.xml to patch jflex generated files to stop increasing buffer beyond token size that lucene accepts
135150
https://github.com/OpenGrok/OpenGrok/issues/1170 make parsers stop producing tokens > 32766 chars
136151
at least for PlainFullTokenizer, PlainSymbolTokenizer, JavaScriptSymbolTokenizer, JavaSymbolTokenizer
137152
use below ?
@@ -221,10 +236,12 @@ Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
221236
<groupId>org.apache.lucene</groupId>
222237
<artifactId>lucene-analyzers-common</artifactId>
223238
</dependency>
224-
<dependency> <groupId>org.apache.lucene</groupId>
239+
<dependency>
240+
<groupId>org.apache.lucene</groupId>
225241
<artifactId>lucene-queryparser</artifactId>
226242
</dependency>
227-
<dependency> <groupId>org.apache.lucene</groupId>
243+
<dependency>
244+
<groupId>org.apache.lucene</groupId>
228245
<artifactId>lucene-suggest</artifactId>
229246
</dependency>
230247
<dependency>
@@ -254,12 +271,12 @@ Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
254271
<artifactId>derby</artifactId>
255272
<scope>test</scope>
256273
</dependency>
257-
<!-- <dependency>
258-
<groupId>org.apache.derby</groupId>
259-
<artifactId>derbyclient</artifactId>
260-
<scope>run</scope>
261-
</dependency>
262-
-->
274+
<!-- <dependency>
275+
<groupId>org.apache.derby</groupId>
276+
<artifactId>derbyclient</artifactId>
277+
<scope>run</scope>
278+
</dependency>
279+
-->
263280

264281
</dependencies>
265282

opengrok-web-nbproject/nbproject/project.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ excludes=
3535
file.reference.bcel-6.0.jar=../lib/bcel-6.0.jar
3636
file.reference.json-simple-1.1.1.jar=../lib/json-simple-1.1.1.jar
3737
j2ee.platform.classpath=${j2ee.server.home}/lib/annotations-api.jar:${j2ee.server.home}/lib/catalina-ant.jar:${j2ee.server.home}/lib/catalina-ha.jar:${j2ee.server.home}/lib/catalina-storeconfig.jar:${j2ee.server.home}/lib/catalina-tribes.jar:${j2ee.server.home}/lib/catalina.jar:${j2ee.server.home}/lib/ecj-4.4.2.jar:${j2ee.server.home}/lib/el-api.jar:${j2ee.server.home}/lib/jasper-el.jar:${j2ee.server.home}/lib/jasper.jar:${j2ee.server.home}/lib/jsp-api.jar:${j2ee.server.home}/lib/servlet-api.jar:${j2ee.server.home}/lib/tomcat-api.jar:${j2ee.server.home}/lib/tomcat-coyote.jar:${j2ee.server.home}/lib/tomcat-dbcp.jar:${j2ee.server.home}/lib/tomcat-i18n-es.jar:${j2ee.server.home}/lib/tomcat-i18n-fr.jar:${j2ee.server.home}/lib/tomcat-i18n-ja.jar:${j2ee.server.home}/lib/tomcat-jdbc.jar:${j2ee.server.home}/lib/tomcat-jni.jar:${j2ee.server.home}/lib/tomcat-util-scan.jar:${j2ee.server.home}/lib/tomcat-util.jar:${j2ee.server.home}/lib/tomcat-websocket.jar:${j2ee.server.home}/lib/websocket-api.jar
38-
lucene.version=6.4.0
38+
lucene.version=6.4.1
3939
lucene-core.jar=lucene-core-${lucene.version}.jar
4040
lucene-analyzers-common.jar=lucene-analyzers-common-${lucene.version}.jar
4141
lucene-queryparser.jar=lucene-queryparser-${lucene.version}.jar

platform/solaris/ips/create.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ PKG pkgsend add file doc/ctags.config mode=0444 owner=root group=sys path=/usr/o
214214

215215

216216
# install libs
217-
LV=6.4.0
217+
LV=6.4.1
218218
for file in ant.jar \
219219
bcel-6.0.jar \
220220
lucene-analyzers-common-${LV}.jar \

platform/solaris/pkgdef/prototype

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ f none usr/opengrok/doc/opengrok-agent.properties=platform/solaris/default/openg
6262
f none usr/opengrok/lib/opengrok.jar=dist/opengrok.jar 0444 root bin
6363
f none usr/opengrok/lib/ant.jar=dist/lib/ant.jar 0444 root bin
6464
f none usr/opengrok/lib/bcel-6.0.jar=lib/bcel-6.0.jar 0444 root bin
65-
f none usr/opengrok/lib/lucene-core-6.4.0.jar=lib/lucene-core-6.4.0.jar 0444 root bin
66-
f none usr/opengrok/lib/lucene-analyzers-common-6.4.0.jar=lib/lucene-analyzers-common-6.4.0.jar 0444 root bin
67-
f none usr/opengrok/lib/lucene-queryparser-6.4.0.jar=lib/lucene-queryparser-6.4.0.jar 0444 root bin
68-
f none usr/opengrok/lib/lucene-suggest-6.4.0.jar=lib/lucene-suggest-6.4.0.jar 0444 root bin
65+
f none usr/opengrok/lib/lucene-core-6.4.1.jar=lib/lucene-core-6.4.1.jar 0444 root bin
66+
f none usr/opengrok/lib/lucene-analyzers-common-6.4.1.jar=lib/lucene-analyzers-common-6.4.1.jar 0444 root bin
67+
f none usr/opengrok/lib/lucene-queryparser-6.4.1.jar=lib/lucene-queryparser-6.4.1.jar 0444 root bin
68+
f none usr/opengrok/lib/lucene-suggest-6.4.1.jar=lib/lucene-suggest-6.4.1.jar 0444 root bin
6969
f none usr/opengrok/lib/jrcs.jar=lib/jrcs.jar 0444 root bin
7070
f none usr/opengrok/lib/swing-layout-0.9.jar=lib/swing-layout-0.9.jar 0444 root bin
7171
f none usr/opengrok/lib/json-simple-1.1.1.jar=lib/json-simple-1.1.1.jar 0444 root bin

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
5858
</modules>
5959

6060
<properties>
61-
<lucene.version>6.4.0</lucene.version>
61+
<lucene.version>6.4.1</lucene.version>
6262
<mavenjavadocplugin.version>2.10.4</mavenjavadocplugin.version>
6363
<compileSource>1.8</compileSource>
6464
<compileTarget>1.8</compileTarget>

src/org/opensolaris/opengrok/analysis/CompatibleAnalyser.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,18 @@ public CompatibleAnalyser() {
3737
protected TokenStreamComponents createComponents(String fieldName) {
3838
switch (fieldName) {
3939
case QueryBuilder.FULL:
40-
return new TokenStreamComponents(new PlainFullTokenizer());
40+
return new TokenStreamComponents(new PlainFullTokenizer(FileAnalyzer.dummyReader));
4141
case QueryBuilder.REFS:
42-
return new TokenStreamComponents(new PlainSymbolTokenizer());
42+
return new TokenStreamComponents(new PlainSymbolTokenizer(FileAnalyzer.dummyReader));
4343
case QueryBuilder.DEFS:
44-
return new TokenStreamComponents(new PlainSymbolTokenizer());
44+
return new TokenStreamComponents(new PlainSymbolTokenizer(FileAnalyzer.dummyReader));
4545
case QueryBuilder.PATH:
4646
case QueryBuilder.PROJECT:
4747
return new TokenStreamComponents(new PathTokenizer());
4848
case QueryBuilder.HIST:
4949
return new HistoryAnalyzer().createComponents(fieldName);
5050
default:
51-
return new TokenStreamComponents(new PlainFullTokenizer());
51+
return new TokenStreamComponents(new PlainFullTokenizer(FileAnalyzer.dummyReader));
5252
}
5353
}
5454
}

src/org/opensolaris/opengrok/analysis/FileAnalyzer.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
package org.opensolaris.opengrok.analysis;
2525

2626
import java.io.IOException;
27+
import java.io.Reader;
28+
import java.io.StringReader;
2729
import java.io.Writer;
2830
import java.util.logging.Level;
2931
import java.util.logging.Logger;
@@ -140,13 +142,15 @@ public Genre getGenre() {
140142
return factory.getGenre();
141143
}
142144

145+
public static Reader dummyReader=new StringReader("");
146+
143147
/** Creates a new instance of FileAnalyzer
144148
* @param factory name of factory to be used
145149
*/
146150
public FileAnalyzer(FileAnalyzerFactory factory) {
147151
super(Analyzer.PER_FIELD_REUSE_STRATEGY);
148152
this.factory = factory;
149-
153+
SymbolTokenizer=new PlainSymbolTokenizer(dummyReader);
150154
}
151155

152156
/**
@@ -180,23 +184,24 @@ public void analyze(Document doc, StreamSource src, Writer xrefOut) throws IOExc
180184
}
181185

182186
// you analyzer HAS to override this to get proper symbols in results
183-
protected JFlexTokenizer SymbolTokenizer=new PlainSymbolTokenizer();
187+
protected JFlexTokenizer SymbolTokenizer;
184188

185189
@Override
186190
protected TokenStreamComponents createComponents(String fieldName) {
187191
switch (fieldName) {
188192
case "full":
189-
return new TokenStreamComponents(new PlainFullTokenizer());
193+
return new TokenStreamComponents(new PlainFullTokenizer(dummyReader));
190194
case "path":
191195
case "project":
192196
return new TokenStreamComponents(new PathTokenizer());
193197
case "hist":
194198
return new HistoryAnalyzer().createComponents(fieldName);
199+
//below is set by PlainAnalyzer to workaround #1376 symbols search works like full text search
195200
case "refs": {
196-
return new TokenStreamComponents(SymbolTokenizer);
197-
}
201+
return new TokenStreamComponents(SymbolTokenizer);
202+
}
198203
case "defs":
199-
return new TokenStreamComponents(new PlainSymbolTokenizer());
204+
return new TokenStreamComponents(new PlainSymbolTokenizer(dummyReader));
200205
default:
201206
LOGGER.log(
202207
Level.WARNING, "Have no analyzer for: {0}", fieldName);

src/org/opensolaris/opengrok/analysis/HistoryAnalyzer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public HistoryAnalyzer() {
5858
*/
5959
@Override
6060
protected TokenStreamComponents createComponents(String fieldName) {
61-
final PlainFullTokenizer plainfull = new PlainFullTokenizer();
61+
final PlainFullTokenizer plainfull = new PlainFullTokenizer(FileAnalyzer.dummyReader);
6262
//we are counting position increments, this might affect the queries later and need to be in sync, especially for highlighting of results
6363
return new TokenStreamComponents(plainfull, new StopFilter(plainfull, stopWords));
6464
}

src/org/opensolaris/opengrok/analysis/JFlexTokenizer.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@
1818
*/
1919

2020
/*
21-
* Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
21+
* Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
2222
*/
2323
package org.opensolaris.opengrok.analysis;
2424

2525
import java.io.IOException;
2626
import java.io.Reader;
27+
import java.io.StringReader;
2728
import java.util.Stack;
2829
import org.apache.lucene.analysis.Tokenizer;
2930
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
@@ -53,27 +54,25 @@ public abstract class JFlexTokenizer extends Tokenizer {
5354
abstract public void yybegin(int newState);
5455

5556
abstract public int yystate();
56-
57+
5758
//TODO can be removed once we figure out jflex generation of empty constructor
5859
protected JFlexTokenizer(Reader in) {
5960
super();
61+
setReader(in);
6062
}
61-
62-
protected JFlexTokenizer() {
63-
super();
64-
}
65-
63+
6664
/**
6765
* Reinitialize the tokenizer with new reader.
6866
* @throws java.io.IOException in case of I/O error
6967
*/
7068
@Override
7169
public void reset() throws IOException {
7270
super.reset();
73-
stack.clear();
71+
stack.clear();
7472
this.yyreset(input);
73+
clearAttributes();
7574
}
76-
75+
7776
@Override
7877
public final void close() throws IOException {
7978
super.close();
@@ -92,7 +91,8 @@ public final void close() throws IOException {
9291
* @throws IOException in case of I/O error
9392
*/
9493
@Override
95-
public final boolean incrementToken() throws IOException {
94+
public final boolean incrementToken() throws IOException {
95+
clearAttributes();
9696
return this.yylex();
9797
}
9898

0 commit comments

Comments
 (0)