fix #2184 OR query with full-width space
This commit is contained in:
parent
f6d71f505f
commit
68690b7782
2 changed files with 20 additions and 3 deletions
|
@ -109,6 +109,8 @@ public interface FessProp {
|
|||
|
||||
String CRAWLER_DOCUMENT_SPACE_CHARS = "crawlerDocumentSpaceChars";
|
||||
|
||||
String CRAWLER_DOCUMENT_SPACES = "crawlerDocumentSpaces";
|
||||
|
||||
String CRAWLER_DOCUMENT_FULLSTOP_CHARS = "crawlerDocumentFullstopChars";
|
||||
|
||||
String INDEX_ADMIN_ARRAY_FIELD_SET = "indexAdminArrayFieldSet";
|
||||
|
@ -1460,6 +1462,15 @@ public interface FessProp {
|
|||
return getCrawlerDocumentCharsAsArray(CRAWLER_DOCUMENT_SPACE_CHARS, getCrawlerDocumentSpaceChars());
|
||||
}
|
||||
|
||||
default String[] getCrawlerDocumentSpaces() {
|
||||
String[] spaces = (String[]) propMap.get(CRAWLER_DOCUMENT_SPACES);
|
||||
if (spaces == null) {
|
||||
spaces = Arrays.stream(getCrawlerDocumentSpaceCharsAsArray()).mapToObj(Character::toString).toArray(n -> new String[n]);
|
||||
propMap.put(CRAWLER_DOCUMENT_SPACES, spaces);
|
||||
}
|
||||
return spaces;
|
||||
}
|
||||
|
||||
default int[] getCrawlerDocumentCharsAsArray(final String key, final String spaceStr) {
|
||||
int[] spaceChars = (int[]) propMap.get(key);
|
||||
if (spaceChars == null) {
|
||||
|
|
|
@ -28,10 +28,12 @@ import org.codelibs.fess.mylasta.direction.FessConfig;
|
|||
|
||||
public class QueryStringBuilder {
|
||||
|
||||
private static final String OR_ALT = "||";
|
||||
private static final String OR_ALT = " || ";
|
||||
|
||||
private static final String OR = " OR ";
|
||||
|
||||
private static final String SPACE = " ";
|
||||
|
||||
private SearchRequestParams params;
|
||||
|
||||
protected String quote(final String value) {
|
||||
|
@ -81,13 +83,17 @@ public class QueryStringBuilder {
|
|||
return queryBuf.toString().trim();
|
||||
}
|
||||
|
||||
protected void appendQuery(final StringBuilder queryBuf, final String q) {
|
||||
protected void appendQuery(final StringBuilder queryBuf, final String query) {
|
||||
String q = query;
|
||||
for (final String s : ComponentUtil.getFessConfig().getCrawlerDocumentSpaces()) {
|
||||
q = q.replace(s, SPACE);
|
||||
}
|
||||
final boolean exists = q.indexOf(OR) != -1 || q.indexOf(OR_ALT) != -1;
|
||||
queryBuf.append(' ');
|
||||
if (exists) {
|
||||
queryBuf.append('(');
|
||||
}
|
||||
queryBuf.append(q);
|
||||
queryBuf.append(query);
|
||||
if (exists) {
|
||||
queryBuf.append(')');
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue