mirror of https://github.com/apache/lucene.git
LUCENE-9531: Consolidate duplicated generated classes CharStream and FastCharStream (#1886)
This commit is contained in:
parent
fbf8e4f044
commit
5ec2bac91c
|
@ -73,6 +73,17 @@ def commonCleanups = { FileTree generatedFiles ->
|
||||||
|
|
||||||
generatedFiles.matching({ include "*TokenManager.java" }).each { file ->
|
generatedFiles.matching({ include "*TokenManager.java" }).each { file ->
|
||||||
modifyFile(file, { text ->
|
modifyFile(file, { text ->
|
||||||
|
// Remove redundant imports.
|
||||||
|
text = text.replaceAll(
|
||||||
|
/(?m)^import .+/,
|
||||||
|
"")
|
||||||
|
// Add CharStream imports.
|
||||||
|
text = text.replaceAll(
|
||||||
|
/package (.+)/,
|
||||||
|
'''
|
||||||
|
package $1
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
'''.trim())
|
||||||
// Eliminates redundant cast message.
|
// Eliminates redundant cast message.
|
||||||
text = text.replace(
|
text = text.replace(
|
||||||
"int hiByte = (int)(curChar >> 8);",
|
"int hiByte = (int)(curChar >> 8);",
|
||||||
|
@ -112,16 +123,6 @@ configure(project(":lucene:queryparser")) {
|
||||||
return text
|
return text
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
generatedFiles.matching { include "*TokenManager.java" }.each { file ->
|
|
||||||
modifyFile(file, { text ->
|
|
||||||
// Remove redundant imports.
|
|
||||||
text = text.replaceAll(
|
|
||||||
/(?m)^import .+/,
|
|
||||||
"")
|
|
||||||
return text
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,16 +145,6 @@ configure(project(":lucene:queryparser")) {
|
||||||
return text
|
return text
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
generatedFiles.matching { include "*TokenManager.java" }.each { file ->
|
|
||||||
modifyFile(file, { text ->
|
|
||||||
// Remove redundant imports.
|
|
||||||
text = text.replaceAll(
|
|
||||||
/(?m)^import .+/,
|
|
||||||
"")
|
|
||||||
return text
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,16 +221,6 @@ configure(project(":lucene:queryparser")) {
|
||||||
return text
|
return text
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
generatedFiles.matching { include "StandardSyntaxParserTokenManager.java" }.each { file ->
|
|
||||||
modifyFile(file, { text ->
|
|
||||||
// Remove redundant imports.
|
|
||||||
text = text.replaceAll(
|
|
||||||
/(?m)^import .+/,
|
|
||||||
"")
|
|
||||||
return text
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,16 +258,6 @@ configure(project(":solr:core")) {
|
||||||
return text
|
return text
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
generatedFiles.matching { include "*TokenManager.java" }.each { file ->
|
|
||||||
modifyFile(file, { text ->
|
|
||||||
// Remove redundant imports.
|
|
||||||
text = text.replaceAll(
|
|
||||||
/(?m)^import .+/,
|
|
||||||
"")
|
|
||||||
return text
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -363,6 +334,9 @@ class JavaCCTask extends DefaultTask {
|
||||||
project.copy {
|
project.copy {
|
||||||
from tempDir
|
from tempDir
|
||||||
into targetDir
|
into targetDir
|
||||||
|
|
||||||
|
// We don't need CharStream interface as we redirect to our own.
|
||||||
|
exclude "CharStream.java"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,6 +134,9 @@ Improvements
|
||||||
|
|
||||||
* LUCENE-9527: Upgrade javacc to 7.0.4, regenerate query parsers. (Dawid Weiss)
|
* LUCENE-9527: Upgrade javacc to 7.0.4, regenerate query parsers. (Dawid Weiss)
|
||||||
|
|
||||||
|
* LUCENE-9531: Consolidated CharStream and FastCharStream classes: these have been moved
|
||||||
|
from each query parser package to org.apache.lucene.queryparser.charstream (Dawid Weiss).
|
||||||
|
|
||||||
Bug fixes
|
Bug fixes
|
||||||
|
|
||||||
* LUCENE-8663: NRTCachingDirectory.slowFileExists may open a file while
|
* LUCENE-8663: NRTCachingDirectory.slowFileExists may open a file while
|
||||||
|
|
|
@ -1,6 +1,20 @@
|
||||||
/* Generated By:JavaCC: Do not edit this line. CharStream.java Version 7.0 */
|
/*
|
||||||
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
package org.apache.lucene.queryparser.classic;
|
* 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.lucene.queryparser.charstream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This interface describes a character stream that maintains line and
|
* This interface describes a character stream that maintains line and
|
||||||
|
@ -16,9 +30,7 @@ package org.apache.lucene.queryparser.classic;
|
||||||
* by the lexer. Hence their implementation won't affect the generated lexer's
|
* by the lexer. Hence their implementation won't affect the generated lexer's
|
||||||
* operation.
|
* operation.
|
||||||
*/
|
*/
|
||||||
|
public interface CharStream {
|
||||||
public
|
|
||||||
interface CharStream {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the next character from the selected input. The method
|
* Returns the next character from the selected input. The method
|
||||||
|
@ -27,22 +39,6 @@ interface CharStream {
|
||||||
*/
|
*/
|
||||||
char readChar() throws java.io.IOException;
|
char readChar() throws java.io.IOException;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* Returns the column position of the character last read.
|
|
||||||
* @deprecated
|
|
||||||
* @see #getEndColumn
|
|
||||||
*/
|
|
||||||
int getColumn();
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* Returns the line number of the character last read.
|
|
||||||
* @deprecated
|
|
||||||
* @see #getEndLine
|
|
||||||
*/
|
|
||||||
int getLine();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the column number of the last character for current token (being
|
* Returns the column number of the last character for current token (being
|
||||||
* matched after the last call to BeginTOken).
|
* matched after the last call to BeginTOken).
|
||||||
|
@ -110,11 +106,4 @@ interface CharStream {
|
||||||
* affect the lexer's operation.
|
* affect the lexer's operation.
|
||||||
*/
|
*/
|
||||||
void Done();
|
void Done();
|
||||||
|
|
||||||
|
|
||||||
void setTabSize(int i);
|
|
||||||
int getTabSize();
|
|
||||||
boolean getTrackLineColumn();
|
|
||||||
void setTrackLineColumn(boolean trackLineColumn);
|
|
||||||
}
|
}
|
||||||
/* (filtered)*/
|
|
|
@ -14,15 +14,21 @@
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.apache.lucene.queryparser.surround.parser;
|
package org.apache.lucene.queryparser.charstream;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
|
||||||
/** An efficient implementation of JavaCC's CharStream interface. <p>Note that
|
/**
|
||||||
* this does not do line-number counting, but instead keeps track of the
|
* An efficient implementation of JavaCC's CharStream interface.
|
||||||
* character position of the token in the input, as required by Lucene's {@link
|
* <p>
|
||||||
* org.apache.lucene.analysis.tokenattributes.OffsetAttribute} API. */
|
* Note that this does not do line-number counting, but instead keeps track of the
|
||||||
|
* character position of the token in the input, as required by Lucene's
|
||||||
|
* {@link org.apache.lucene.analysis.tokenattributes.OffsetAttribute} API.
|
||||||
|
*/
|
||||||
public final class FastCharStream implements CharStream {
|
public final class FastCharStream implements CharStream {
|
||||||
|
// See SOLR-11314
|
||||||
|
private final static IOException READ_PAST_EOF = new IOException("Read past EOF.");
|
||||||
|
|
||||||
char[] buffer = null;
|
char[] buffer = null;
|
||||||
|
|
||||||
int bufferLength = 0; // end of valid chars
|
int bufferLength = 0; // end of valid chars
|
||||||
|
@ -33,7 +39,9 @@ public final class FastCharStream implements CharStream {
|
||||||
|
|
||||||
Reader input; // source of chars
|
Reader input; // source of chars
|
||||||
|
|
||||||
/** Constructs from a Reader. */
|
/**
|
||||||
|
* Constructs from a Reader.
|
||||||
|
*/
|
||||||
public FastCharStream(Reader r) {
|
public FastCharStream(Reader r) {
|
||||||
input = r;
|
input = r;
|
||||||
}
|
}
|
||||||
|
@ -45,7 +53,7 @@ public final class FastCharStream implements CharStream {
|
||||||
return buffer[bufferPosition++];
|
return buffer[bufferPosition++];
|
||||||
}
|
}
|
||||||
|
|
||||||
private final void refill() throws IOException {
|
private void refill() throws IOException {
|
||||||
int newPosition = bufferLength - tokenStart;
|
int newPosition = bufferLength - tokenStart;
|
||||||
|
|
||||||
if (tokenStart == 0) { // token won't fit in buffer
|
if (tokenStart == 0) { // token won't fit in buffer
|
||||||
|
@ -66,9 +74,9 @@ public final class FastCharStream implements CharStream {
|
||||||
tokenStart = 0;
|
tokenStart = 0;
|
||||||
|
|
||||||
int charsRead = // fill space in buffer
|
int charsRead = // fill space in buffer
|
||||||
input.read(buffer, newPosition, buffer.length-newPosition);
|
input.read(buffer, newPosition, buffer.length - newPosition);
|
||||||
if (charsRead == -1)
|
if (charsRead == -1)
|
||||||
throw new IOException("read past eof");
|
throw READ_PAST_EOF;
|
||||||
else
|
else
|
||||||
bufferLength += charsRead;
|
bufferLength += charsRead;
|
||||||
}
|
}
|
||||||
|
@ -101,60 +109,27 @@ public final class FastCharStream implements CharStream {
|
||||||
try {
|
try {
|
||||||
input.close();
|
input.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
throw new UncheckedIOException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the column position of the character last read.
|
|
||||||
* @deprecated see: #getEndColumn
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
@Override
|
|
||||||
public final int getColumn() {
|
|
||||||
return bufferStart + bufferPosition;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @deprecated see: #getEndLine
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
@Override
|
|
||||||
public final int getLine() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
@Override
|
@Override
|
||||||
public final int getEndColumn() {
|
public final int getEndColumn() {
|
||||||
return bufferStart + bufferPosition;
|
return bufferStart + bufferPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final int getEndLine() {
|
public final int getEndLine() {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final int getBeginColumn() {
|
public final int getBeginColumn() {
|
||||||
return bufferStart + tokenStart;
|
return bufferStart + tokenStart;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final int getBeginLine() {
|
public final int getBeginLine() {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTabSize(int i) {
|
|
||||||
throw new RuntimeException("Tab size not implemented.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getTabSize() {
|
|
||||||
throw new RuntimeException("Tab size not implemented.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getTrackLineColumn() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTrackLineColumn(boolean trackLineColumn) {
|
|
||||||
throw new RuntimeException("Line/Column tracking not implemented.");
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This package contains reusable parts for javacc-generated
|
||||||
|
* grammars (query parsers).
|
||||||
|
*
|
||||||
|
* @see org.apache.lucene.queryparser.charstream.CharStream
|
||||||
|
* @see org.apache.lucene.queryparser.charstream.FastCharStream
|
||||||
|
*/
|
||||||
|
package org.apache.lucene.queryparser.charstream;
|
|
@ -1,161 +0,0 @@
|
||||||
/*
|
|
||||||
* 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.lucene.queryparser.classic;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
/** An efficient implementation of JavaCC's CharStream interface. <p>Note that
|
|
||||||
* this does not do line-number counting, but instead keeps track of the
|
|
||||||
* character position of the token in the input, as required by Lucene's {@link
|
|
||||||
* org.apache.lucene.analysis.tokenattributes.OffsetAttribute} API.
|
|
||||||
* */
|
|
||||||
public final class FastCharStream implements CharStream {
|
|
||||||
char[] buffer = null;
|
|
||||||
|
|
||||||
int bufferLength = 0; // end of valid chars
|
|
||||||
int bufferPosition = 0; // next char to read
|
|
||||||
|
|
||||||
int tokenStart = 0; // offset in buffer
|
|
||||||
int bufferStart = 0; // position in file of buffer
|
|
||||||
|
|
||||||
Reader input; // source of chars
|
|
||||||
|
|
||||||
/** Constructs from a Reader. */
|
|
||||||
public FastCharStream(Reader r) {
|
|
||||||
input = r;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final char readChar() throws IOException {
|
|
||||||
if (bufferPosition >= bufferLength)
|
|
||||||
refill();
|
|
||||||
return buffer[bufferPosition++];
|
|
||||||
}
|
|
||||||
|
|
||||||
private final void refill() throws IOException {
|
|
||||||
int newPosition = bufferLength - tokenStart;
|
|
||||||
|
|
||||||
if (tokenStart == 0) { // token won't fit in buffer
|
|
||||||
if (buffer == null) { // first time: alloc buffer
|
|
||||||
buffer = new char[2048];
|
|
||||||
} else if (bufferLength == buffer.length) { // grow buffer
|
|
||||||
char[] newBuffer = new char[buffer.length*2];
|
|
||||||
System.arraycopy(buffer, 0, newBuffer, 0, bufferLength);
|
|
||||||
buffer = newBuffer;
|
|
||||||
}
|
|
||||||
} else { // shift token to front
|
|
||||||
System.arraycopy(buffer, tokenStart, buffer, 0, newPosition);
|
|
||||||
}
|
|
||||||
|
|
||||||
bufferLength = newPosition; // update state
|
|
||||||
bufferPosition = newPosition;
|
|
||||||
bufferStart += tokenStart;
|
|
||||||
tokenStart = 0;
|
|
||||||
|
|
||||||
int charsRead = // fill space in buffer
|
|
||||||
input.read(buffer, newPosition, buffer.length-newPosition);
|
|
||||||
if (charsRead == -1)
|
|
||||||
throw new IOException("read past eof");
|
|
||||||
else
|
|
||||||
bufferLength += charsRead;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final char BeginToken() throws IOException {
|
|
||||||
tokenStart = bufferPosition;
|
|
||||||
return readChar();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final void backup(int amount) {
|
|
||||||
bufferPosition -= amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final String GetImage() {
|
|
||||||
return new String(buffer, tokenStart, bufferPosition - tokenStart);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final char[] GetSuffix(int len) {
|
|
||||||
char[] value = new char[len];
|
|
||||||
System.arraycopy(buffer, bufferPosition - len, value, 0, len);
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final void Done() {
|
|
||||||
try {
|
|
||||||
input.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the column position of the character last read.
|
|
||||||
* @deprecated see: #getEndColumn
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
@Override
|
|
||||||
public final int getColumn() {
|
|
||||||
return bufferStart + bufferPosition;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @deprecated see #getEndLine
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
@Deprecated
|
|
||||||
public final int getLine() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getEndColumn() {
|
|
||||||
return bufferStart + bufferPosition;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getEndLine() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getBeginColumn() {
|
|
||||||
return bufferStart + tokenStart;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getBeginLine() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTabSize(int i) {
|
|
||||||
throw new RuntimeException("Tab size not implemented.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getTabSize() {
|
|
||||||
throw new RuntimeException("Tab size not implemented.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getTrackLineColumn() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTrackLineColumn(boolean trackLineColumn) {
|
|
||||||
throw new RuntimeException("Line/Column tracking not implemented.");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -15,6 +15,8 @@ import org.apache.lucene.document.DateTools;
|
||||||
import org.apache.lucene.search.BooleanClause;
|
import org.apache.lucene.search.BooleanClause;
|
||||||
import org.apache.lucene.search.Query;
|
import org.apache.lucene.search.Query;
|
||||||
import org.apache.lucene.search.TermRangeQuery;
|
import org.apache.lucene.search.TermRangeQuery;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is generated by JavaCC. The most important method is
|
* This class is generated by JavaCC. The most important method is
|
||||||
|
@ -706,22 +708,6 @@ if (splitOnWhitespace == false) {
|
||||||
finally { jj_save(2, xla); }
|
finally { jj_save(2, xla); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean jj_3R_3()
|
|
||||||
{
|
|
||||||
if (jj_scan_token(TERM)) return true;
|
|
||||||
jj_lookingAhead = true;
|
|
||||||
jj_semLA = getToken(1).kind == TERM && allowedPostMultiTerm(getToken(2).kind);
|
|
||||||
jj_lookingAhead = false;
|
|
||||||
if (!jj_semLA || jj_3R_6()) return true;
|
|
||||||
Token xsp;
|
|
||||||
if (jj_3R_7()) return true;
|
|
||||||
while (true) {
|
|
||||||
xsp = jj_scanpos;
|
|
||||||
if (jj_3R_7()) { jj_scanpos = xsp; break; }
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean jj_3R_6()
|
private boolean jj_3R_6()
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -770,6 +756,22 @@ if (splitOnWhitespace == false) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean jj_3R_3()
|
||||||
|
{
|
||||||
|
if (jj_scan_token(TERM)) return true;
|
||||||
|
jj_lookingAhead = true;
|
||||||
|
jj_semLA = getToken(1).kind == TERM && allowedPostMultiTerm(getToken(2).kind);
|
||||||
|
jj_lookingAhead = false;
|
||||||
|
if (!jj_semLA || jj_3R_6()) return true;
|
||||||
|
Token xsp;
|
||||||
|
if (jj_3R_7()) return true;
|
||||||
|
while (true) {
|
||||||
|
xsp = jj_scanpos;
|
||||||
|
if (jj_3R_7()) { jj_scanpos = xsp; break; }
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/** Generated Token Manager. */
|
/** Generated Token Manager. */
|
||||||
public QueryParserTokenManager token_source;
|
public QueryParserTokenManager token_source;
|
||||||
/** Current token. */
|
/** Current token. */
|
||||||
|
|
|
@ -38,6 +38,8 @@ import org.apache.lucene.document.DateTools;
|
||||||
import org.apache.lucene.search.BooleanClause;
|
import org.apache.lucene.search.BooleanClause;
|
||||||
import org.apache.lucene.search.Query;
|
import org.apache.lucene.search.Query;
|
||||||
import org.apache.lucene.search.TermRangeQuery;
|
import org.apache.lucene.search.TermRangeQuery;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is generated by JavaCC. The most important method is
|
* This class is generated by JavaCC. The most important method is
|
||||||
|
|
|
@ -25,6 +25,8 @@ import java.util.regex.Pattern;
|
||||||
import org.apache.lucene.analysis.Analyzer;
|
import org.apache.lucene.analysis.Analyzer;
|
||||||
import org.apache.lucene.document.DateTools;
|
import org.apache.lucene.document.DateTools;
|
||||||
import org.apache.lucene.index.Term;
|
import org.apache.lucene.index.Term;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
import org.apache.lucene.queryparser.classic.QueryParser.Operator;
|
import org.apache.lucene.queryparser.classic.QueryParser.Operator;
|
||||||
import org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration;
|
import org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration;
|
||||||
import org.apache.lucene.search.*;
|
import org.apache.lucene.search.*;
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
/* QueryParserTokenManager.java */
|
/* QueryParserTokenManager.java */
|
||||||
/* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
|
/* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
|
||||||
package org.apache.lucene.queryparser.classic;
|
package org.apache.lucene.queryparser.classic;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,120 +0,0 @@
|
||||||
/* Generated By:JavaCC: Do not edit this line. CharStream.java Version 7.0 */
|
|
||||||
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
|
|
||||||
package org.apache.lucene.queryparser.flexible.standard.parser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This interface describes a character stream that maintains line and
|
|
||||||
* column number positions of the characters. It also has the capability
|
|
||||||
* to backup the stream to some extent. An implementation of this
|
|
||||||
* interface is used in the TokenManager implementation generated by
|
|
||||||
* JavaCCParser.
|
|
||||||
*
|
|
||||||
* All the methods except backup can be implemented in any fashion. backup
|
|
||||||
* needs to be implemented correctly for the correct operation of the lexer.
|
|
||||||
* Rest of the methods are all used to get information like line number,
|
|
||||||
* column number and the String that constitutes a token and are not used
|
|
||||||
* by the lexer. Hence their implementation won't affect the generated lexer's
|
|
||||||
* operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public
|
|
||||||
interface CharStream {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the next character from the selected input. The method
|
|
||||||
* of selecting the input is the responsibility of the class
|
|
||||||
* implementing this interface. Can throw any java.io.IOException.
|
|
||||||
*/
|
|
||||||
char readChar() throws java.io.IOException;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* Returns the column position of the character last read.
|
|
||||||
* @deprecated
|
|
||||||
* @see #getEndColumn
|
|
||||||
*/
|
|
||||||
int getColumn();
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* Returns the line number of the character last read.
|
|
||||||
* @deprecated
|
|
||||||
* @see #getEndLine
|
|
||||||
*/
|
|
||||||
int getLine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the column number of the last character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getEndColumn();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the line number of the last character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getEndLine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the column number of the first character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getBeginColumn();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the line number of the first character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getBeginLine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Backs up the input stream by amount steps. Lexer calls this method if it
|
|
||||||
* had already read some characters, but could not use them to match a
|
|
||||||
* (longer) token. So, they will be used again as the prefix of the next
|
|
||||||
* token and it is the implementation's responsibility to do this right.
|
|
||||||
*/
|
|
||||||
void backup(int amount);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the next character that marks the beginning of the next token.
|
|
||||||
* All characters must remain in the buffer between two successive calls
|
|
||||||
* to this method to implement backup correctly.
|
|
||||||
*/
|
|
||||||
char BeginToken() throws java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a string made up of characters from the marked token beginning
|
|
||||||
* to the current buffer position. Implementations have the choice of returning
|
|
||||||
* anything that they want to. For example, for efficiency, one might decide
|
|
||||||
* to just return null, which is a valid implementation.
|
|
||||||
*/
|
|
||||||
String GetImage();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an array of characters that make up the suffix of length 'len' for
|
|
||||||
* the currently matched token. This is used to build up the matched string
|
|
||||||
* for use in actions in the case of MORE. A simple and inefficient
|
|
||||||
* implementation of this is as follows :
|
|
||||||
*
|
|
||||||
* {
|
|
||||||
* String t = GetImage();
|
|
||||||
* return t.substring(t.length() - len, t.length()).toCharArray();
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
char[] GetSuffix(int len);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The lexer calls this function to indicate that it is done with the stream
|
|
||||||
* and hence implementations can free any resources held by this class.
|
|
||||||
* Again, the body of this function can be just empty and it will not
|
|
||||||
* affect the lexer's operation.
|
|
||||||
*/
|
|
||||||
void Done();
|
|
||||||
|
|
||||||
|
|
||||||
void setTabSize(int i);
|
|
||||||
int getTabSize();
|
|
||||||
boolean getTrackLineColumn();
|
|
||||||
void setTrackLineColumn(boolean trackLineColumn);
|
|
||||||
}
|
|
||||||
/* (filtered)*/
|
|
|
@ -1,161 +0,0 @@
|
||||||
/*
|
|
||||||
* 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.lucene.queryparser.flexible.standard.parser;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
/** An efficient implementation of JavaCC's CharStream interface. <p>Note that
|
|
||||||
* this does not do line-number counting, but instead keeps track of the
|
|
||||||
* character position of the token in the input, as required by Lucene's {@link
|
|
||||||
* org.apache.lucene.analysis.tokenattributes.OffsetAttribute} API.
|
|
||||||
* */
|
|
||||||
public final class FastCharStream implements CharStream {
|
|
||||||
char[] buffer = null;
|
|
||||||
|
|
||||||
int bufferLength = 0; // end of valid chars
|
|
||||||
int bufferPosition = 0; // next char to read
|
|
||||||
|
|
||||||
int tokenStart = 0; // offset in buffer
|
|
||||||
int bufferStart = 0; // position in file of buffer
|
|
||||||
|
|
||||||
Reader input; // source of chars
|
|
||||||
|
|
||||||
/** Constructs from a Reader. */
|
|
||||||
public FastCharStream(Reader r) {
|
|
||||||
input = r;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final char readChar() throws IOException {
|
|
||||||
if (bufferPosition >= bufferLength)
|
|
||||||
refill();
|
|
||||||
return buffer[bufferPosition++];
|
|
||||||
}
|
|
||||||
|
|
||||||
private final void refill() throws IOException {
|
|
||||||
int newPosition = bufferLength - tokenStart;
|
|
||||||
|
|
||||||
if (tokenStart == 0) { // token won't fit in buffer
|
|
||||||
if (buffer == null) { // first time: alloc buffer
|
|
||||||
buffer = new char[2048];
|
|
||||||
} else if (bufferLength == buffer.length) { // grow buffer
|
|
||||||
char[] newBuffer = new char[buffer.length * 2];
|
|
||||||
System.arraycopy(buffer, 0, newBuffer, 0, bufferLength);
|
|
||||||
buffer = newBuffer;
|
|
||||||
}
|
|
||||||
} else { // shift token to front
|
|
||||||
System.arraycopy(buffer, tokenStart, buffer, 0, newPosition);
|
|
||||||
}
|
|
||||||
|
|
||||||
bufferLength = newPosition; // update state
|
|
||||||
bufferPosition = newPosition;
|
|
||||||
bufferStart += tokenStart;
|
|
||||||
tokenStart = 0;
|
|
||||||
|
|
||||||
int charsRead = // fill space in buffer
|
|
||||||
input.read(buffer, newPosition, buffer.length-newPosition);
|
|
||||||
if (charsRead == -1)
|
|
||||||
throw new IOException("read past eof");
|
|
||||||
else
|
|
||||||
bufferLength += charsRead;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final char BeginToken() throws IOException {
|
|
||||||
tokenStart = bufferPosition;
|
|
||||||
return readChar();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final void backup(int amount) {
|
|
||||||
bufferPosition -= amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final String GetImage() {
|
|
||||||
return new String(buffer, tokenStart, bufferPosition - tokenStart);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final char[] GetSuffix(int len) {
|
|
||||||
char[] value = new char[len];
|
|
||||||
System.arraycopy(buffer, bufferPosition - len, value, 0, len);
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final void Done() {
|
|
||||||
try {
|
|
||||||
input.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the column position of the character last read.
|
|
||||||
* @deprecated see #getEndColumn
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
@Override
|
|
||||||
public final int getColumn() {
|
|
||||||
return bufferStart + bufferPosition;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @deprecated see #getEndLine
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
@Override
|
|
||||||
public final int getLine() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getEndColumn() {
|
|
||||||
return bufferStart + bufferPosition;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getEndLine() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getBeginColumn() {
|
|
||||||
return bufferStart + tokenStart;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getBeginLine() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTabSize(int i) {
|
|
||||||
throw new RuntimeException("Tab size not implemented.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getTabSize() {
|
|
||||||
throw new RuntimeException("Tab size not implemented.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getTrackLineColumn() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTrackLineColumn(boolean trackLineColumn) {
|
|
||||||
throw new RuntimeException("Line/Column tracking not implemented.");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -41,6 +41,8 @@ import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode;
|
||||||
import org.apache.lucene.queryparser.flexible.core.nodes.QuotedFieldQueryNode;
|
import org.apache.lucene.queryparser.flexible.core.nodes.QuotedFieldQueryNode;
|
||||||
import org.apache.lucene.queryparser.flexible.core.parser.SyntaxParser;
|
import org.apache.lucene.queryparser.flexible.core.parser.SyntaxParser;
|
||||||
import org.apache.lucene.queryparser.flexible.standard.nodes.TermRangeQueryNode;
|
import org.apache.lucene.queryparser.flexible.standard.nodes.TermRangeQueryNode;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parser for the standard Lucene syntax
|
* Parser for the standard Lucene syntax
|
||||||
|
@ -747,17 +749,6 @@ if (boost != null) {
|
||||||
finally { jj_save(2, xla); }
|
finally { jj_save(2, xla); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean jj_3R_26()
|
|
||||||
{
|
|
||||||
Token xsp;
|
|
||||||
xsp = jj_scanpos;
|
|
||||||
if (jj_3_2()) {
|
|
||||||
jj_scanpos = xsp;
|
|
||||||
if (jj_3_3()) return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean jj_3R_22()
|
private boolean jj_3R_22()
|
||||||
{
|
{
|
||||||
if (jj_scan_token(OR)) return true;
|
if (jj_scan_token(OR)) return true;
|
||||||
|
@ -1045,6 +1036,17 @@ if (boost != null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean jj_3R_26()
|
||||||
|
{
|
||||||
|
Token xsp;
|
||||||
|
xsp = jj_scanpos;
|
||||||
|
if (jj_3_2()) {
|
||||||
|
jj_scanpos = xsp;
|
||||||
|
if (jj_3_3()) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/** Generated Token Manager. */
|
/** Generated Token Manager. */
|
||||||
public StandardSyntaxParserTokenManager token_source;
|
public StandardSyntaxParserTokenManager token_source;
|
||||||
/** Current token. */
|
/** Current token. */
|
||||||
|
|
|
@ -48,6 +48,8 @@ import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode;
|
||||||
import org.apache.lucene.queryparser.flexible.core.nodes.QuotedFieldQueryNode;
|
import org.apache.lucene.queryparser.flexible.core.nodes.QuotedFieldQueryNode;
|
||||||
import org.apache.lucene.queryparser.flexible.core.parser.SyntaxParser;
|
import org.apache.lucene.queryparser.flexible.core.parser.SyntaxParser;
|
||||||
import org.apache.lucene.queryparser.flexible.standard.nodes.TermRangeQueryNode;
|
import org.apache.lucene.queryparser.flexible.standard.nodes.TermRangeQueryNode;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parser for the standard Lucene syntax
|
* Parser for the standard Lucene syntax
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
/* StandardSyntaxParserTokenManager.java */
|
/* StandardSyntaxParserTokenManager.java */
|
||||||
/* Generated By:JavaCC: Do not edit this line. StandardSyntaxParserTokenManager.java */
|
/* Generated By:JavaCC: Do not edit this line. StandardSyntaxParserTokenManager.java */
|
||||||
package org.apache.lucene.queryparser.flexible.standard.parser;
|
package org.apache.lucene.queryparser.flexible.standard.parser;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
/*
|
/*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
@ -37,6 +38,8 @@ package org.apache.lucene.queryparser.flexible.standard.parser;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,120 +0,0 @@
|
||||||
/* Generated By:JavaCC: Do not edit this line. CharStream.java Version 7.0 */
|
|
||||||
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
|
|
||||||
package org.apache.lucene.queryparser.surround.parser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This interface describes a character stream that maintains line and
|
|
||||||
* column number positions of the characters. It also has the capability
|
|
||||||
* to backup the stream to some extent. An implementation of this
|
|
||||||
* interface is used in the TokenManager implementation generated by
|
|
||||||
* JavaCCParser.
|
|
||||||
*
|
|
||||||
* All the methods except backup can be implemented in any fashion. backup
|
|
||||||
* needs to be implemented correctly for the correct operation of the lexer.
|
|
||||||
* Rest of the methods are all used to get information like line number,
|
|
||||||
* column number and the String that constitutes a token and are not used
|
|
||||||
* by the lexer. Hence their implementation won't affect the generated lexer's
|
|
||||||
* operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public
|
|
||||||
interface CharStream {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the next character from the selected input. The method
|
|
||||||
* of selecting the input is the responsibility of the class
|
|
||||||
* implementing this interface. Can throw any java.io.IOException.
|
|
||||||
*/
|
|
||||||
char readChar() throws java.io.IOException;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* Returns the column position of the character last read.
|
|
||||||
* @deprecated
|
|
||||||
* @see #getEndColumn
|
|
||||||
*/
|
|
||||||
int getColumn();
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* Returns the line number of the character last read.
|
|
||||||
* @deprecated
|
|
||||||
* @see #getEndLine
|
|
||||||
*/
|
|
||||||
int getLine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the column number of the last character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getEndColumn();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the line number of the last character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getEndLine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the column number of the first character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getBeginColumn();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the line number of the first character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getBeginLine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Backs up the input stream by amount steps. Lexer calls this method if it
|
|
||||||
* had already read some characters, but could not use them to match a
|
|
||||||
* (longer) token. So, they will be used again as the prefix of the next
|
|
||||||
* token and it is the implementation's responsibility to do this right.
|
|
||||||
*/
|
|
||||||
void backup(int amount);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the next character that marks the beginning of the next token.
|
|
||||||
* All characters must remain in the buffer between two successive calls
|
|
||||||
* to this method to implement backup correctly.
|
|
||||||
*/
|
|
||||||
char BeginToken() throws java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a string made up of characters from the marked token beginning
|
|
||||||
* to the current buffer position. Implementations have the choice of returning
|
|
||||||
* anything that they want to. For example, for efficiency, one might decide
|
|
||||||
* to just return null, which is a valid implementation.
|
|
||||||
*/
|
|
||||||
String GetImage();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an array of characters that make up the suffix of length 'len' for
|
|
||||||
* the currently matched token. This is used to build up the matched string
|
|
||||||
* for use in actions in the case of MORE. A simple and inefficient
|
|
||||||
* implementation of this is as follows :
|
|
||||||
*
|
|
||||||
* {
|
|
||||||
* String t = GetImage();
|
|
||||||
* return t.substring(t.length() - len, t.length()).toCharArray();
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
char[] GetSuffix(int len);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The lexer calls this function to indicate that it is done with the stream
|
|
||||||
* and hence implementations can free any resources held by this class.
|
|
||||||
* Again, the body of this function can be just empty and it will not
|
|
||||||
* affect the lexer's operation.
|
|
||||||
*/
|
|
||||||
void Done();
|
|
||||||
|
|
||||||
|
|
||||||
void setTabSize(int i);
|
|
||||||
int getTabSize();
|
|
||||||
boolean getTrackLineColumn();
|
|
||||||
void setTrackLineColumn(boolean trackLineColumn);
|
|
||||||
}
|
|
||||||
/* (filtered)*/
|
|
|
@ -18,6 +18,8 @@ import org.apache.lucene.queryparser.surround.query.DistanceQuery;
|
||||||
import org.apache.lucene.queryparser.surround.query.SrndTermQuery;
|
import org.apache.lucene.queryparser.surround.query.SrndTermQuery;
|
||||||
import org.apache.lucene.queryparser.surround.query.SrndPrefixQuery;
|
import org.apache.lucene.queryparser.surround.query.SrndPrefixQuery;
|
||||||
import org.apache.lucene.queryparser.surround.query.SrndTruncQuery;
|
import org.apache.lucene.queryparser.surround.query.SrndTruncQuery;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is generated by JavaCC. The only method that clients should need
|
* This class is generated by JavaCC. The only method that clients should need
|
||||||
|
|
|
@ -46,6 +46,8 @@ import org.apache.lucene.queryparser.surround.query.DistanceQuery;
|
||||||
import org.apache.lucene.queryparser.surround.query.SrndTermQuery;
|
import org.apache.lucene.queryparser.surround.query.SrndTermQuery;
|
||||||
import org.apache.lucene.queryparser.surround.query.SrndPrefixQuery;
|
import org.apache.lucene.queryparser.surround.query.SrndPrefixQuery;
|
||||||
import org.apache.lucene.queryparser.surround.query.SrndTruncQuery;
|
import org.apache.lucene.queryparser.surround.query.SrndTruncQuery;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is generated by JavaCC. The only method that clients should need
|
* This class is generated by JavaCC. The only method that clients should need
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
/* QueryParserTokenManager.java */
|
/* QueryParserTokenManager.java */
|
||||||
/* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
|
/* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
|
||||||
package org.apache.lucene.queryparser.surround.parser;
|
package org.apache.lucene.queryparser.surround.parser;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@ import org.apache.lucene.index.DirectoryReader;
|
||||||
import org.apache.lucene.index.IndexOptions;
|
import org.apache.lucene.index.IndexOptions;
|
||||||
import org.apache.lucene.index.RandomIndexWriter;
|
import org.apache.lucene.index.RandomIndexWriter;
|
||||||
import org.apache.lucene.index.Term;
|
import org.apache.lucene.index.Term;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
import org.apache.lucene.queryparser.classic.QueryParser.Operator;
|
import org.apache.lucene.queryparser.classic.QueryParser.Operator;
|
||||||
import org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration;
|
import org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration;
|
||||||
import org.apache.lucene.queryparser.util.QueryParserTestBase;
|
import org.apache.lucene.queryparser.util.QueryParserTestBase;
|
||||||
|
|
|
@ -45,6 +45,7 @@ import org.apache.lucene.index.DirectoryReader;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
import org.apache.lucene.index.IndexWriter;
|
import org.apache.lucene.index.IndexWriter;
|
||||||
import org.apache.lucene.index.Term;
|
import org.apache.lucene.index.Term;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
import org.apache.lucene.queryparser.flexible.core.QueryNodeException;
|
import org.apache.lucene.queryparser.flexible.core.QueryNodeException;
|
||||||
import org.apache.lucene.queryparser.flexible.core.messages.QueryParserMessages;
|
import org.apache.lucene.queryparser.flexible.core.messages.QueryParserMessages;
|
||||||
import org.apache.lucene.queryparser.flexible.core.nodes.FuzzyQueryNode;
|
import org.apache.lucene.queryparser.flexible.core.nodes.FuzzyQueryNode;
|
||||||
|
@ -54,7 +55,6 @@ import org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessor
|
||||||
import org.apache.lucene.queryparser.flexible.messages.MessageImpl;
|
import org.apache.lucene.queryparser.flexible.messages.MessageImpl;
|
||||||
import org.apache.lucene.queryparser.flexible.standard.config.StandardQueryConfigHandler;
|
import org.apache.lucene.queryparser.flexible.standard.config.StandardQueryConfigHandler;
|
||||||
import org.apache.lucene.queryparser.flexible.standard.nodes.WildcardQueryNode;
|
import org.apache.lucene.queryparser.flexible.standard.nodes.WildcardQueryNode;
|
||||||
import org.apache.lucene.queryparser.flexible.standard.parser.FastCharStream;
|
|
||||||
import org.apache.lucene.queryparser.flexible.standard.parser.ParseException;
|
import org.apache.lucene.queryparser.flexible.standard.parser.ParseException;
|
||||||
import org.apache.lucene.queryparser.flexible.standard.parser.StandardSyntaxParser;
|
import org.apache.lucene.queryparser.flexible.standard.parser.StandardSyntaxParser;
|
||||||
import org.apache.lucene.search.BooleanClause.Occur;
|
import org.apache.lucene.search.BooleanClause.Occur;
|
||||||
|
|
|
@ -126,6 +126,8 @@ Other Changes
|
||||||
|
|
||||||
* SOLR-14846: Backup/Restore classes no longer take Optional method parameters and will accept nulls instead. (Mike Drob)
|
* SOLR-14846: Backup/Restore classes no longer take Optional method parameters and will accept nulls instead. (Mike Drob)
|
||||||
|
|
||||||
|
* LUCENE-9531: Consolidated CharStream and FastCharStream classes: these have been moved from each query parser
|
||||||
|
package to org.apache.lucene.queryparser.charstream (Dawid Weiss).
|
||||||
|
|
||||||
Bug Fixes
|
Bug Fixes
|
||||||
---------------------
|
---------------------
|
||||||
|
|
|
@ -1,120 +0,0 @@
|
||||||
/* Generated By:JavaCC: Do not edit this line. CharStream.java Version 7.0 */
|
|
||||||
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
|
|
||||||
package org.apache.solr.parser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This interface describes a character stream that maintains line and
|
|
||||||
* column number positions of the characters. It also has the capability
|
|
||||||
* to backup the stream to some extent. An implementation of this
|
|
||||||
* interface is used in the TokenManager implementation generated by
|
|
||||||
* JavaCCParser.
|
|
||||||
*
|
|
||||||
* All the methods except backup can be implemented in any fashion. backup
|
|
||||||
* needs to be implemented correctly for the correct operation of the lexer.
|
|
||||||
* Rest of the methods are all used to get information like line number,
|
|
||||||
* column number and the String that constitutes a token and are not used
|
|
||||||
* by the lexer. Hence their implementation won't affect the generated lexer's
|
|
||||||
* operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public
|
|
||||||
interface CharStream {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the next character from the selected input. The method
|
|
||||||
* of selecting the input is the responsibility of the class
|
|
||||||
* implementing this interface. Can throw any java.io.IOException.
|
|
||||||
*/
|
|
||||||
char readChar() throws java.io.IOException;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* Returns the column position of the character last read.
|
|
||||||
* @deprecated
|
|
||||||
* @see #getEndColumn
|
|
||||||
*/
|
|
||||||
int getColumn();
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* Returns the line number of the character last read.
|
|
||||||
* @deprecated
|
|
||||||
* @see #getEndLine
|
|
||||||
*/
|
|
||||||
int getLine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the column number of the last character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getEndColumn();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the line number of the last character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getEndLine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the column number of the first character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getBeginColumn();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the line number of the first character for current token (being
|
|
||||||
* matched after the last call to BeginTOken).
|
|
||||||
*/
|
|
||||||
int getBeginLine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Backs up the input stream by amount steps. Lexer calls this method if it
|
|
||||||
* had already read some characters, but could not use them to match a
|
|
||||||
* (longer) token. So, they will be used again as the prefix of the next
|
|
||||||
* token and it is the implementation's responsibility to do this right.
|
|
||||||
*/
|
|
||||||
void backup(int amount);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the next character that marks the beginning of the next token.
|
|
||||||
* All characters must remain in the buffer between two successive calls
|
|
||||||
* to this method to implement backup correctly.
|
|
||||||
*/
|
|
||||||
char BeginToken() throws java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a string made up of characters from the marked token beginning
|
|
||||||
* to the current buffer position. Implementations have the choice of returning
|
|
||||||
* anything that they want to. For example, for efficiency, one might decide
|
|
||||||
* to just return null, which is a valid implementation.
|
|
||||||
*/
|
|
||||||
String GetImage();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an array of characters that make up the suffix of length 'len' for
|
|
||||||
* the currently matched token. This is used to build up the matched string
|
|
||||||
* for use in actions in the case of MORE. A simple and inefficient
|
|
||||||
* implementation of this is as follows :
|
|
||||||
*
|
|
||||||
* {
|
|
||||||
* String t = GetImage();
|
|
||||||
* return t.substring(t.length() - len, t.length()).toCharArray();
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
char[] GetSuffix(int len);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The lexer calls this function to indicate that it is done with the stream
|
|
||||||
* and hence implementations can free any resources held by this class.
|
|
||||||
* Again, the body of this function can be just empty and it will not
|
|
||||||
* affect the lexer's operation.
|
|
||||||
*/
|
|
||||||
void Done();
|
|
||||||
|
|
||||||
|
|
||||||
void setTabSize(int i);
|
|
||||||
int getTabSize();
|
|
||||||
boolean getTrackLineColumn();
|
|
||||||
void setTrackLineColumn(boolean trackLineColumn);
|
|
||||||
}
|
|
||||||
/* (filtered)*/
|
|
|
@ -1,168 +0,0 @@
|
||||||
/*
|
|
||||||
* 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.parser;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
/** An efficient implementation of JavaCC's CharStream interface. <p>Note that
|
|
||||||
* this does not do line-number counting, but instead keeps track of the
|
|
||||||
* character position of the token in the input, as required by Lucene's {@link
|
|
||||||
* org.apache.lucene.analysis.tokenattributes.OffsetAttribute} API.
|
|
||||||
* */
|
|
||||||
public final class FastCharStream implements CharStream {
|
|
||||||
char[] buffer = null;
|
|
||||||
|
|
||||||
int bufferLength = 0; // end of valid chars
|
|
||||||
int bufferPosition = 0; // next char to read
|
|
||||||
|
|
||||||
int tokenStart = 0; // offset in buffer
|
|
||||||
int bufferStart = 0; // position in file of buffer
|
|
||||||
|
|
||||||
Reader input; // source of chars
|
|
||||||
|
|
||||||
/** Constructs from a Reader. */
|
|
||||||
public FastCharStream(Reader r) {
|
|
||||||
input = r;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final char readChar() throws IOException {
|
|
||||||
if (bufferPosition >= bufferLength)
|
|
||||||
refill();
|
|
||||||
return buffer[bufferPosition++];
|
|
||||||
}
|
|
||||||
|
|
||||||
private final void refill() throws IOException {
|
|
||||||
int newPosition = bufferLength - tokenStart;
|
|
||||||
|
|
||||||
if (tokenStart == 0) { // token won't fit in buffer
|
|
||||||
if (buffer == null) { // first time: alloc buffer
|
|
||||||
buffer = new char[2048];
|
|
||||||
} else if (bufferLength == buffer.length) { // grow buffer
|
|
||||||
char[] newBuffer = new char[buffer.length*2];
|
|
||||||
System.arraycopy(buffer, 0, newBuffer, 0, bufferLength);
|
|
||||||
buffer = newBuffer;
|
|
||||||
}
|
|
||||||
} else { // shift token to front
|
|
||||||
System.arraycopy(buffer, tokenStart, buffer, 0, newPosition);
|
|
||||||
}
|
|
||||||
|
|
||||||
bufferLength = newPosition; // update state
|
|
||||||
bufferPosition = newPosition;
|
|
||||||
bufferStart += tokenStart;
|
|
||||||
tokenStart = 0;
|
|
||||||
|
|
||||||
int charsRead = // fill space in buffer
|
|
||||||
input.read(buffer, newPosition, buffer.length-newPosition);
|
|
||||||
if (charsRead == -1)
|
|
||||||
throw READ_PAST_EOF;
|
|
||||||
else
|
|
||||||
bufferLength += charsRead;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final char BeginToken() throws IOException {
|
|
||||||
tokenStart = bufferPosition;
|
|
||||||
return readChar();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This Exception is used as a signal rather than an exceptional state.
|
|
||||||
*/
|
|
||||||
private static final IOException READ_PAST_EOF = new IOException("read past eof");
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final void backup(int amount) {
|
|
||||||
bufferPosition -= amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final String GetImage() {
|
|
||||||
return new String(buffer, tokenStart, bufferPosition - tokenStart);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final char[] GetSuffix(int len) {
|
|
||||||
char[] value = new char[len];
|
|
||||||
System.arraycopy(buffer, bufferPosition - len, value, 0, len);
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final void Done() {
|
|
||||||
try {
|
|
||||||
input.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* Returns the column position of the character last read.
|
|
||||||
* @deprecated
|
|
||||||
* @see #getEndColumn
|
|
||||||
*/
|
|
||||||
public final int getLine() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
@Deprecated
|
|
||||||
/**
|
|
||||||
* Returns the column position of the character last read.
|
|
||||||
* @deprecated
|
|
||||||
* @see #getEndColumn
|
|
||||||
*/
|
|
||||||
public final int getColumn() {
|
|
||||||
return bufferStart + bufferPosition;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getEndColumn() {
|
|
||||||
return bufferStart + bufferPosition;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getEndLine() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getBeginColumn() {
|
|
||||||
return bufferStart + tokenStart;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public final int getBeginLine() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTabSize(int i) {
|
|
||||||
throw new RuntimeException("Tab size not implemented.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getTabSize() {
|
|
||||||
throw new RuntimeException("Tab size not implemented.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getTrackLineColumn() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTrackLineColumn(boolean trackLineColumn) {
|
|
||||||
throw new RuntimeException("Line/Column tracking not implemented.");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -15,6 +15,8 @@ import org.apache.lucene.search.Query;
|
||||||
import org.apache.solr.search.SyntaxError;
|
import org.apache.solr.search.SyntaxError;
|
||||||
import org.apache.solr.search.QParser;
|
import org.apache.solr.search.QParser;
|
||||||
|
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
|
|
||||||
public class QueryParser extends SolrQueryParserBase implements QueryParserConstants {
|
public class QueryParser extends SolrQueryParserBase implements QueryParserConstants {
|
||||||
/** The default operator for parsing queries.
|
/** The default operator for parsing queries.
|
||||||
|
@ -666,27 +668,6 @@ if (splitOnWhitespace == false) {
|
||||||
finally { jj_save(2, xla); }
|
finally { jj_save(2, xla); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean jj_3R_6()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean jj_3R_3()
|
|
||||||
{
|
|
||||||
if (jj_scan_token(TERM)) return true;
|
|
||||||
jj_lookingAhead = true;
|
|
||||||
jj_semLA = getToken(1).kind == TERM && allowedPostMultiTerm(getToken(2).kind);
|
|
||||||
jj_lookingAhead = false;
|
|
||||||
if (!jj_semLA || jj_3R_6()) return true;
|
|
||||||
Token xsp;
|
|
||||||
if (jj_3R_7()) return true;
|
|
||||||
while (true) {
|
|
||||||
xsp = jj_scanpos;
|
|
||||||
if (jj_3R_7()) { jj_scanpos = xsp; break; }
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean jj_3_3()
|
private boolean jj_3_3()
|
||||||
{
|
{
|
||||||
Token xsp;
|
Token xsp;
|
||||||
|
@ -730,6 +711,27 @@ if (splitOnWhitespace == false) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean jj_3R_6()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean jj_3R_3()
|
||||||
|
{
|
||||||
|
if (jj_scan_token(TERM)) return true;
|
||||||
|
jj_lookingAhead = true;
|
||||||
|
jj_semLA = getToken(1).kind == TERM && allowedPostMultiTerm(getToken(2).kind);
|
||||||
|
jj_lookingAhead = false;
|
||||||
|
if (!jj_semLA || jj_3R_6()) return true;
|
||||||
|
Token xsp;
|
||||||
|
if (jj_3R_7()) return true;
|
||||||
|
while (true) {
|
||||||
|
xsp = jj_scanpos;
|
||||||
|
if (jj_3R_7()) { jj_scanpos = xsp; break; }
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/** Generated Token Manager. */
|
/** Generated Token Manager. */
|
||||||
public QueryParserTokenManager token_source;
|
public QueryParserTokenManager token_source;
|
||||||
/** Current token. */
|
/** Current token. */
|
||||||
|
|
|
@ -38,6 +38,8 @@ import org.apache.lucene.search.Query;
|
||||||
import org.apache.solr.search.SyntaxError;
|
import org.apache.solr.search.SyntaxError;
|
||||||
import org.apache.solr.search.QParser;
|
import org.apache.solr.search.QParser;
|
||||||
|
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
|
|
||||||
public class QueryParser extends SolrQueryParserBase {
|
public class QueryParser extends SolrQueryParserBase {
|
||||||
/** The default operator for parsing queries.
|
/** The default operator for parsing queries.
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
/* QueryParserTokenManager.java */
|
/* QueryParserTokenManager.java */
|
||||||
/* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
|
/* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
|
||||||
package org.apache.solr.parser;
|
package org.apache.solr.parser;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,8 @@ import org.apache.solr.search.QParser;
|
||||||
import org.apache.solr.search.QueryUtils;
|
import org.apache.solr.search.QueryUtils;
|
||||||
import org.apache.solr.search.SolrConstantScoreQuery;
|
import org.apache.solr.search.SolrConstantScoreQuery;
|
||||||
import org.apache.solr.search.SyntaxError;
|
import org.apache.solr.search.SyntaxError;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.FastCharStream;
|
||||||
|
|
||||||
import static org.apache.solr.parser.SolrQueryParserBase.SynonymQueryStyle.AS_SAME_TERM;
|
import static org.apache.solr.parser.SolrQueryParserBase.SynonymQueryStyle.AS_SAME_TERM;
|
||||||
|
|
||||||
|
|
|
@ -26,12 +26,12 @@ import java.util.Map;
|
||||||
|
|
||||||
import org.apache.lucene.analysis.Analyzer;
|
import org.apache.lucene.analysis.Analyzer;
|
||||||
import org.apache.lucene.analysis.TokenStream;
|
import org.apache.lucene.analysis.TokenStream;
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
import org.apache.lucene.search.AutomatonQuery;
|
import org.apache.lucene.search.AutomatonQuery;
|
||||||
import org.apache.lucene.search.Query;
|
import org.apache.lucene.search.Query;
|
||||||
import org.apache.lucene.util.automaton.Automaton;
|
import org.apache.lucene.util.automaton.Automaton;
|
||||||
import org.apache.lucene.util.automaton.Operations;
|
import org.apache.lucene.util.automaton.Operations;
|
||||||
import org.apache.solr.SolrTestCaseJ4;
|
import org.apache.solr.SolrTestCaseJ4;
|
||||||
import org.apache.solr.parser.CharStream;
|
|
||||||
import org.apache.solr.parser.ParseException;
|
import org.apache.solr.parser.ParseException;
|
||||||
import org.apache.solr.parser.SolrQueryParserBase;
|
import org.apache.solr.parser.SolrQueryParserBase;
|
||||||
import org.apache.solr.request.SolrQueryRequest;
|
import org.apache.solr.request.SolrQueryRequest;
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.solr.parser;
|
package org.apache.solr.parser;
|
||||||
|
|
||||||
|
import org.apache.lucene.queryparser.charstream.CharStream;
|
||||||
import org.apache.lucene.search.Query;
|
import org.apache.lucene.search.Query;
|
||||||
import org.apache.solr.common.SolrException;
|
import org.apache.solr.common.SolrException;
|
||||||
import org.apache.solr.request.SolrQueryRequest;
|
import org.apache.solr.request.SolrQueryRequest;
|
||||||
|
|
Loading…
Reference in New Issue