Changeset 7754


Ignore:
Timestamp:
30/11/10 11:40:02 (9 years ago)
Author:
mnagni
Message:

Now the "exact phrase search" works exactly for the phrase and not for the AND chain of the words composing it

Location:
TI01-discovery-API/trunk/MEDINDiscoveryService
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery-API/trunk/MEDINDiscoveryService

    • Property svn:ignore
      •  

        old new  
        11DummyForEclipse 
         2 
         3.metadata 
  • TI01-discovery-API/trunk/MEDINDiscoveryService/pom.xml

    r7609 r7754  
    44        <groupId>ndg.services.discovery</groupId> 
    55        <artifactId>MedinDiscoveryService</artifactId> 
    6         <version>1.2.5</version> 
     6        <version>1.2.6</version> 
    77        <packaging>aar</packaging> 
    88 
  • TI01-discovery-API/trunk/MEDINDiscoveryService/src/main/java/ndg/common/TermParser.java

    r7609 r7754  
    159159        } 
    160160         
    161         private String[] extractWordPhrase(String term) throws AssembleQueryException { 
     161        /** 
     162         * Returns an array containg the phrases into the term 
     163         * @param term the term to parse 
     164         * @return the phrases contained 
     165         **/ 
     166        public String[] extractWordPhrase(String term) throws AssembleQueryException { 
    162167                List<String> ret = new ArrayList<String>(); 
    163168 
  • TI01-discovery-API/trunk/MEDINDiscoveryService/src/main/java/ndg/services/discovery/model/CommonMethods.java

    r7558 r7754  
    132132                StringBuffer orderSQL = new StringBuffer(); 
    133133                 
    134  
     134                whereSQL.append("transformed_document.original_document_id = original_document.original_document_id");           
     135                 
    135136                fromSQL.append(" FROM "); 
    136137                fromSQL.append(DiscoveryDictionary.ORIGINAL_DOCUMENT_TABLE); 
     138                fromSQL.append(", " + DiscoveryDictionary.TRANSFORMED_DOCUMENT_TABLE); 
    137139 
    138140                assembleSearchQuery(selectSQL, fromSQL, whereSQL,criteria, retrieveType); 
  • TI01-discovery-API/trunk/MEDINDiscoveryService/src/main/java/ndg/services/discovery/model/SearchAgent.java

    r7558 r7754  
    177177                boolean secondPass = false; 
    178178                int queryIndex = 0; 
     179                TermParser parser = new TermParser(); 
     180                String[] phrases = null; 
    179181                for (TermSearchType termType : terms) { 
     182                        phrases = null; 
    180183                        String term = termType.getTerm(); 
    181184 
     
    183186                        if (term == null || term.length() == 0) 
    184187                                continue; 
    185                         term = new TermParser().parseTerm(term); 
     188                         
     189                        //DO NOT INVERT!! 
     190                        phrases = parser.extractWordPhrase(term); 
     191                        term = parser.parseTerm(term);                   
    186192 
    187193                        DiscoveryDictionary.TermTarget termTarget = DiscoveryDictionary.getTermType(termType.getTermTarget()); 
     
    196202 
    197203                        String operator = getOperator(termType.getOperator()); 
    198  
     204                         
     205                        checkWHERE_AND(whereSQL, secondPass); 
     206                         
    199207                        if ((!secondPass && operator.equals(OPERATOR.NOT.name())) || (secondPass && queryIndex < terms.size())) { 
    200208                                whereSQL.append(" "); 
     
    205213                        whereSQL.append(" query" + Integer.toString(queryIndex) + " @@ "); 
    206214                        whereSQL.append(composeVector(termTarget)); 
     215                         
     216                        if (phrases != null && phrases[0].trim().length() > 0) { 
     217                                for (String phrase : phrases) { 
     218                                        checkWHERE_AND(whereSQL, secondPass); 
     219                                        //the ILIKE (case insensitive) operator is POSTGRESQL a specific extension 
     220                                        whereSQL.append("transformed_document.transformed_document ilike '%" + phrase.replaceAll("'", "") + "%'");                                       
     221                                } 
     222                        } 
    207223 
    208224                        secondPass = true; 
Note: See TracChangeset for help on using the changeset viewer.