fixed search term parser for empty terms
This commit is contained in:
		
							parent
							
								
									27f31446c0
								
							
						
					
					
						commit
						438ae34988
					
				| @ -34,6 +34,7 @@ import java.util.Arrays; | |||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Locale; | import java.util.Locale; | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| public class FtsUtils { | public class FtsUtils { | ||||||
| 
 | 
 | ||||||
| 	private static List<String> KEYWORDS = Arrays.asList("OR", "AND"); | 	private static List<String> KEYWORDS = Arrays.asList("OR", "AND"); | ||||||
| @ -44,10 +45,10 @@ public class FtsUtils { | |||||||
| 			if (part.isEmpty()) { | 			if (part.isEmpty()) { | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			final String cleaned = part.substring(getStartIndex(part), getEndIndex(part) +1); | 			final String cleaned = clean(part); | ||||||
| 			if (isKeyword(cleaned)) { | 			if (isKeyword(cleaned)) { | ||||||
| 				term.add(part); | 				term.add(part); | ||||||
| 			} else { | 			} else if (!cleaned.isEmpty()) { | ||||||
| 				term.add(cleaned); | 				term.add(cleaned); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @ -76,9 +77,13 @@ public class FtsUtils { | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private static int getStartIndex(String term) { | 	private static int getStartIndex(String term) { | ||||||
|  | 		int length = term.length(); | ||||||
| 		int index = 0; | 		int index = 0; | ||||||
| 		while (term.charAt(index) == '*') { | 		while (term.charAt(index) == '*') { | ||||||
| 			++index; | 			++index; | ||||||
|  | 			if (index >= length) { | ||||||
|  | 				break; | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 		return index; | 		return index; | ||||||
| 	} | 	} | ||||||
| @ -87,8 +92,21 @@ public class FtsUtils { | |||||||
| 		int index = term.length() - 1; | 		int index = term.length() - 1; | ||||||
| 		while (term.charAt(index) == '*') { | 		while (term.charAt(index) == '*') { | ||||||
| 			--index; | 			--index; | ||||||
|  | 			if (index < 0) { | ||||||
|  | 				break; | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 		return index; | 		return index; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	private static String clean(String input) { | ||||||
|  | 		int begin = getStartIndex(input); | ||||||
|  | 		int end = getEndIndex(input); | ||||||
|  | 		if (begin > end) { | ||||||
|  | 			return ""; | ||||||
|  | 		} else { | ||||||
|  | 			return input.substring(begin, end + 1); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch