Fixed BLUR-335

Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/3280f726
Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/3280f726
Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/3280f726

Branch: refs/heads/apache-blur-0.2
Commit: 3280f726808d19bccd7c7ba16ff28d1327ab9bcd
Parents: 803765a
Author: Aaron McCurry <[email protected]>
Authored: Tue Jan 28 13:57:26 2014 -0500
Committer: Aaron McCurry <[email protected]>
Committed: Tue Jan 28 13:57:26 2014 -0500

----------------------------------------------------------------------
 .../apache/blur/analysis/BaseFieldManager.java  | 65 ++++++++++++--------
 .../blur/lucene/search/BlurQueryParser.java     | 11 +++-
 .../org/apache/blur/utils/BlurConstants.java    |  1 +
 3 files changed, 51 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/3280f726/blur-query/src/main/java/org/apache/blur/analysis/BaseFieldManager.java
----------------------------------------------------------------------
diff --git 
a/blur-query/src/main/java/org/apache/blur/analysis/BaseFieldManager.java 
b/blur-query/src/main/java/org/apache/blur/analysis/BaseFieldManager.java
index 208194e..73b6798 100644
--- a/blur-query/src/main/java/org/apache/blur/analysis/BaseFieldManager.java
+++ b/blur-query/src/main/java/org/apache/blur/analysis/BaseFieldManager.java
@@ -52,7 +52,9 @@ import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.AnalyzerWrapper;
 import org.apache.lucene.analysis.core.KeywordAnalyzer;
 import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.document.FieldType;
+import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.search.Query;
 
@@ -186,7 +188,7 @@ public abstract class BaseFieldManager extends FieldManager 
{
     List<String> fieldNamesToLoad = getFieldNamesToLoad();
     for (String fieldName : fieldNamesToLoad) {
       if (!_fieldNameToDefMap.containsKey(fieldName)) {
-        tryToLoad(fieldName);  
+        tryToLoad(fieldName);
       }
     }
   }
@@ -211,11 +213,12 @@ public abstract class BaseFieldManager extends 
FieldManager {
   public List<Field> getFields(String rowId, Record record) throws IOException 
{
     List<Field> fields = new ArrayList<Field>();
     String family = record.getFamily();
-    if(family == null || family.isEmpty()){
-       family = BlurConstants.DEFAULT_FAMILY;
+    if (family == null || family.isEmpty()) {
+      family = BlurConstants.DEFAULT_FAMILY;
     }
     List<Column> columns = record.getColumns();
     addDefaultFields(fields, rowId, record);
+    addFieldExistance(fields, record);
     for (Column column : columns) {
       String name = column.getName();
       String value = column.getValue();
@@ -244,6 +247,21 @@ public abstract class BaseFieldManager extends 
FieldManager {
     return fields;
   }
 
+  private void addFieldExistance(List<Field> fields, Record record) {
+    String family = record.getFamily();
+    if (family == null) {
+      family = BlurConstants.DEFAULT_FAMILY;
+    }
+    for (Column column : record.getColumns()) {
+      String name = column.getName();
+      String value = column.getValue();
+      if (value == null || name == null) {
+        continue;
+      }
+      fields.add(new StringField(BlurConstants.FIELDS, family + "." + name, 
Store.NO));
+    }
+  }
+
   private void getAndAddFields(List<Field> fields, String family, Column 
column, String subName,
       FieldTypeDefinition fieldTypeDefinition) {
     for (Field field : fieldTypeDefinition.getFieldsForSubColumn(family, 
column, subName)) {
@@ -257,11 +275,11 @@ public abstract class BaseFieldManager extends 
FieldManager {
 
     validateNotNull(rowId, BlurConstants.ROW_ID);
     validateNotNull(recordId, BlurConstants.RECORD_ID);
-    
-    if (family == null){
-       fields.add(new Field(BlurConstants.FAMILY, 
BlurConstants.DEFAULT_FAMILY, ID_TYPE));
-    }else{
-       fields.add(new Field(BlurConstants.FAMILY, family, ID_TYPE));
+
+    if (family == null) {
+      fields.add(new Field(BlurConstants.FAMILY, BlurConstants.DEFAULT_FAMILY, 
ID_TYPE));
+    } else {
+      fields.add(new Field(BlurConstants.FAMILY, family, ID_TYPE));
     }
     fields.add(new Field(BlurConstants.ROW_ID, rowId, ID_TYPE));
     fields.add(new Field(BlurConstants.RECORD_ID, recordId, ID_TYPE));
@@ -314,9 +332,9 @@ public abstract class BaseFieldManager extends FieldManager 
{
   @Override
   public boolean addColumnDefinition(String family, String columnName, String 
subColumnName, boolean fieldLessIndexed,
       String fieldType, Map<String, String> props) throws IOException {
-       if(family == null){
-               family = BlurConstants.DEFAULT_FAMILY;
-       }
+    if (family == null) {
+      family = BlurConstants.DEFAULT_FAMILY;
+    }
     String baseFieldName = family + "." + columnName;
     String fieldName;
     if (subColumnName != null) {
@@ -557,7 +575,7 @@ public abstract class BaseFieldManager extends FieldManager 
{
     }
     return fieldTypeDefinition.checkSupportForWildcardQuery();
   }
-  
+
   @Override
   public Boolean checkSupportForRegexQuery(String field) throws IOException {
     FieldTypeDefinition fieldTypeDefinition = getFieldTypeDefinition(field);
@@ -567,7 +585,6 @@ public abstract class BaseFieldManager extends FieldManager 
{
     return fieldTypeDefinition.checkSupportForRegexQuery();
   }
 
-
   @Override
   public Boolean checkSupportForCustomQuery(String field) throws IOException {
     FieldTypeDefinition fieldTypeDefinition = getFieldTypeDefinition(field);
@@ -644,17 +661,17 @@ public abstract class BaseFieldManager extends 
FieldManager {
   public boolean isStrict() {
     return _strict;
   }
-  
+
   @Override
-  public String resolveField(String field){
-         if (_fieldNameToDefMap.get(field) != null || isBuiltInField(field) || 
field.equals(_fieldLessField)){
-                 return field;
-         }
-
-         String newField = BlurConstants.DEFAULT_FAMILY + "." + field;
-         if (_fieldNameToDefMap.get(newField) != null){
-                 return newField;
-         }
-         return field;
+  public String resolveField(String field) {
+    if (_fieldNameToDefMap.get(field) != null || isBuiltInField(field) || 
field.equals(_fieldLessField)) {
+      return field;
+    }
+
+    String newField = BlurConstants.DEFAULT_FAMILY + "." + field;
+    if (_fieldNameToDefMap.get(newField) != null) {
+      return newField;
+    }
+    return field;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/3280f726/blur-query/src/main/java/org/apache/blur/lucene/search/BlurQueryParser.java
----------------------------------------------------------------------
diff --git 
a/blur-query/src/main/java/org/apache/blur/lucene/search/BlurQueryParser.java 
b/blur-query/src/main/java/org/apache/blur/lucene/search/BlurQueryParser.java
index 43601a2..587bb2f 100644
--- 
a/blur-query/src/main/java/org/apache/blur/lucene/search/BlurQueryParser.java
+++ 
b/blur-query/src/main/java/org/apache/blur/lucene/search/BlurQueryParser.java
@@ -22,12 +22,14 @@ import java.util.Map;
 import java.util.UUID;
 
 import org.apache.blur.analysis.FieldManager;
+import org.apache.blur.utils.BlurConstants;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.queryparser.classic.QueryParser;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.MultiPhraseQuery;
 import org.apache.lucene.search.PhraseQuery;
 import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.util.Version;
 
 public class BlurQueryParser extends QueryParser {
@@ -163,8 +165,13 @@ public class BlurQueryParser extends QueryParser {
 
   @Override
   protected Query newWildcardQuery(Term t) {
-    if (SUPER.equals(t.field()) && "*".equals(t.text())) {
-      return new MatchAllDocsQuery();
+    if ("*".equals(t.text())) {
+      String fieldName = t.field();
+      if (SUPER.equals(fieldName)) {
+        return new MatchAllDocsQuery();
+      } else {
+        return new TermQuery(new Term(BlurConstants.FIELDS, fieldName));
+      }
     }
     String resolvedField = _fieldManager.resolveField(t.field());
     try {

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/3280f726/blur-util/src/main/java/org/apache/blur/utils/BlurConstants.java
----------------------------------------------------------------------
diff --git a/blur-util/src/main/java/org/apache/blur/utils/BlurConstants.java 
b/blur-util/src/main/java/org/apache/blur/utils/BlurConstants.java
index cca9885..7e20fe1 100644
--- a/blur-util/src/main/java/org/apache/blur/utils/BlurConstants.java
+++ b/blur-util/src/main/java/org/apache/blur/utils/BlurConstants.java
@@ -31,6 +31,7 @@ public class BlurConstants {
   public static final String PRIME_DOC_VALUE = "true";
   public static final String ROW_ID = "rowid";
   public static final String RECORD_ID = "recordid";
+  public static final String FIELDS = "_fields_";
   public static final String FAMILY = "family";
   public static final String DEFAULT_FAMILY = "_default_";
   public static final String SUPER = "super";

Reply via email to