| 
					
						 Good Evening , Please help me
 
  Search string: valve size 100mm bearing
 
  1)     If Iam searching for above string I should be able to get all data containing valve in first place and then size like wise, currently I am getting any data containing all 4 words
  2) If iam searching for string with special characters it should be matched, say for example if I am searching for valve p/n  it should be searchable
  ------------------------------------------------------------------------------------------------------   @Entity @Indexed @Table(name = "MV_SMART_SEARCH_TEXT_REP", schema = "VISION_DEV")
 
  public class SmartSearch implements java.io.Serializable {
      private String rowId;     private String recordNo;     private String erpsfd;     private String purchase;     private String descriptor;     private String locale;     private String orgnId;     private String region;     private String qualityLevel;     private String trustLevel;     private String activeStatus;
      public SmartSearch() {     }
      public SmartSearch(String recordNo, String erpsfd, String purchase, String descriptor, String locale, String orgnId, String region) {         this.recordNo = recordNo;         this.erpsfd = erpsfd;         this.purchase = purchase;         this.descriptor = descriptor;         this.locale = locale;         this.orgnId = orgnId;         this.region = region;     }
      @Id     @Column(name = "ROW_ID", nullable = false, length = 80)     public String getRowId() {         return rowId;     }
      public void setRowId(String rowId) {         this.rowId = rowId;     }
      @Column(name = "RECORD_NO", nullable = false, length = 80)     @Fields({         @Field(name = "recordNo", index = Index.YES, analyze = Analyze.YES, store = Store.NO),         @Field(name = "recordNo_sort", index = Index.YES, analyze = Analyze.NO,                 store = Store.NO)     })     //@Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)     public String getRecordNo() {         return this.recordNo;     }
      public void setRecordNo(String recordNo) {         this.recordNo = recordNo;     }
      // @Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)     @Fields({         @Field(name = "erpsfd", index = Index.YES, analyze = Analyze.YES, store = Store.NO),         @Field(name = "erpsfd_sort", index = Index.YES, analyze = Analyze.NO,                 store = Store.NO)     })
      @Column(name = "ERPSFD", nullable = false, length = 4000)     public String getErpsfd() {         return this.erpsfd;     }
      public void setErpsfd(String erpsfd) {         this.erpsfd = erpsfd;     }
      //@Field(index = Index.YES, analyze = Analyze.YES, store = Store.YES, termVector = TermVector.WITH_POSITION_OFFSETS)     //@Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)     @Fields({         @Field(name = "purchase", index = Index.YES, analyze = Analyze.YES, store = Store.NO),         @Field(name = "purchase_sort", index = Index.YES, analyze = Analyze.NO,                 store = Store.NO)     })
      @Column(name = "PURCHASE", nullable = false, length = 4000)     public String getPurchase() {         return this.purchase;     }
      public void setPurchase(String purchase) {         this.purchase = purchase;     }
      @Fields({         @Field(name = "descriptor", index = Index.YES, analyze = Analyze.YES, store = Store.NO),         @Field(name = "descriptor_sort", index = Index.YES, analyze = Analyze.NO,                 store = Store.NO)     })     // @Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)     @Column(name = "CLASS", length = 4000)     @Sort
      public String getDescriptor() {         return descriptor;     }
      public void setDescriptor(String descriptor) {         this.descriptor = descriptor;     }
      //@Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)     @Fields({         @Field(name = "locale", index = Index.YES, analyze = Analyze.YES, store = Store.NO),         @Field(name = "locale_sort", index = Index.YES, analyze = Analyze.NO,                 store = Store.NO)     })
      @Column(name = "LOCALE", nullable = false, length = 20)     public String getLocale() {         return this.locale;     }
      public void setLocale(String locale) {         this.locale = locale;     }
      @Column(name = "ORGN_ID", nullable = false)     public String getOrgnId() {         return this.orgnId;     }
      public void setOrgnId(String orgnId) {         this.orgnId = orgnId;     }
      @Column(name = "REGION", nullable = false, length = 80)     public String getRegion() {         return this.region;     }
      public void setRegion(String region) {         this.region = region;     } //-creatd new
     // @Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)     @Fields({         @Field(name = "qualityLevel", index = Index.YES, analyze = Analyze.YES, store = Store.NO),         @Field(name = "qualityLevel_sort", index = Index.YES, analyze = Analyze.NO,                 store = Store.NO)     })
      @Column(name = "QUALITY_LEVEL", nullable = false, length = 80)     public String getQualityLevel() {         return qualityLevel;     }
      public void setQualityLevel(String qualityLevel) {         this.qualityLevel = qualityLevel;     }
      //@Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)     @Fields({         @Field(name = "trustLevel", index = Index.YES, analyze = Analyze.YES, store = Store.NO),         @Field(name = "trustLevel_sort", index = Index.YES, analyze = Analyze.NO,                 store = Store.NO)     })
      @Column(name = "TRUST_LEVEl", nullable = false, length = 80)     public String getTrustLevel() {         return trustLevel;     }
      public void setTrustLevel(String trustLevel) {         this.trustLevel = trustLevel;     }
      //@Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)     @Fields({         @Field(name = "activeStatus", index = Index.YES, analyze = Analyze.YES, store = Store.NO),         @Field(name = "activeStatus_sort", index = Index.YES, analyze = Analyze.NO,                 store = Store.NO)     })     @Column(name = "ACTIVE_STATUS", nullable = false, length = 80)     public String getActiveStatus() {         return activeStatus;     }
      public void setActiveStatus(String activeStatus) {         this.activeStatus = activeStatus;     }
  }
  dao ----            resultjsArray = new JSONArray();             fullTextSession = Search.getFullTextSession(access.getSessionFactory().getCurrentSession());             SearchFactory searchFactory = fullTextSession.getSearchFactory();             searchClass = getApplicationPropertyValue("MM_SEARCH_VIEW_NAME");
              if (searchClass == null) {                 searchClass = SmartSearch.class;             }
              QueryBuilder b = fullTextSession.getSearchFactory()                     .buildQueryBuilder().forEntity(searchClass).get();
              BooleanQuery booleanQuery = new BooleanQuery();             String[] splitArray = textData.split("\\s");
              int g = 0;             String searchtext = "";             PrefixQuery pfxQuery = null;             String nativeluceneQuery = "";             for (String splitArray1 : splitArray) {                luceneQuery = b.keyword().wildcard().onField("purchase").matching(splitArray1 + "*").createQuery();                 booleanQuery.add(luceneQuery, BooleanClause.Occur.MUST);             }  FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(booleanQuery);             fullTextQuery.setMaxResults(10);             listitems = fullTextQuery.list(); 
					
  
						
					 |