Author: daniele
Date: 2007-03-02 10:21:17 +0100 (Fri, 02 Mar 2007)
New Revision: 4530
Added:
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueEmptyQueryQueryTransformer.java
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueExactTitleMatchQueryTransformer.java
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueQueryTransformer.java
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AbstractSearchCommand.java
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueSearchCommand.java
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/CatalogueSearchConfiguration.java
Log:
Added code to AbstractSearchCommand for empty query search with
CatalogueSearchCommand.
Properties in modes.xml for CatalogueSarchCommand is now read and added to
CatalogueSarchConfiguration.
Move lots of query logic to querytransformers instead of everything in
CatalogueSearchCOmmand.
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
2007-03-01 13:42:36 UTC (rev 4529)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
2007-03-02 09:21:17 UTC (rev 4530)
@@ -758,6 +758,7 @@
if(sc instanceof CatalogueSearchConfiguration){
final CatalogueSearchConfiguration csc =
(CatalogueSearchConfiguration) sc;
fillBeanProperty(csc, inherit, "queryParameterWhere",
ParseType.String , commandE, "");
+ fillBeanProperty(csc, inherit, "searchBy",
ParseType.String , commandE, "");
}
if(sc instanceof CatalogueAdsSearchConfiguration){
final CatalogueAdsSearchConfiguration casc =
(CatalogueAdsSearchConfiguration) sc;
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AbstractSearchCommand.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AbstractSearchCommand.java
2007-03-01 13:42:36 UTC (rev 4529)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AbstractSearchCommand.java
2007-03-02 09:21:17 UTC (rev 4530)
@@ -351,7 +351,9 @@
executeQuery |= null != parameters.get("c") &&
parameters.get("c").equals("wt");
executeQuery |= null != parameters.get("c") &&
parameters.get("c").equals("n");
executeQuery |= null != parameters.get("c") &&
parameters.get("c").equals("t");
+ executeQuery |= null != parameters.get("c") &&
parameters.get("c").equals("cat");
executeQuery |= null != parameters.get("c") &&
parameters.get("c").equals("na");
+
executeQuery |= null != filter && filter.length() > 0;
LOG.info("executeQuery==" + executeQuery
+ " ; queryToUse:" + queryToUse
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueSearchCommand.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueSearchCommand.java
2007-03-01 13:42:36 UTC (rev 4529)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueSearchCommand.java
2007-03-02 09:21:17 UTC (rev 4530)
@@ -3,7 +3,6 @@
*/
package no.schibstedsok.searchportal.mode.command;
-
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -11,7 +10,10 @@
import java.util.Set;
import no.fast.ds.search.ISearchParameters;
import no.fast.ds.search.SearchParameter;
+import no.schibstedsok.commons.ioc.ContextWrapper;
import no.schibstedsok.searchportal.datamodel.DataModel;
+import no.schibstedsok.searchportal.mode.config.CatalogueSearchConfiguration;
+import no.schibstedsok.searchportal.mode.config.HittaSearchConfiguration;
import no.schibstedsok.searchportal.query.AndClause;
import no.schibstedsok.searchportal.query.AndNotClause;
import no.schibstedsok.searchportal.query.Clause;
@@ -21,6 +23,7 @@
import no.schibstedsok.searchportal.query.NotClause;
import no.schibstedsok.searchportal.query.OperationClause;
import no.schibstedsok.searchportal.query.OrClause;
+import no.schibstedsok.searchportal.query.PhraseClause;
import no.schibstedsok.searchportal.query.Query;
import no.schibstedsok.searchportal.query.XorClause;
import no.schibstedsok.searchportal.query.parser.AbstractReflectionVisitor;
@@ -29,233 +32,201 @@
import no.schibstedsok.searchportal.result.CatalogueSearchResultItem;
import no.schibstedsok.searchportal.result.FastSearchResult;
import no.schibstedsok.searchportal.result.SearchResult;
+import no.schibstedsok.searchportal.site.config.SiteConfiguration;
+
import org.apache.log4j.Logger;
-
/**
- *
+ *
*/
public class CatalogueSearchCommand extends AdvancedFastSearchCommand {
- private static final Logger LOG =
Logger.getLogger(CatalogueSearchCommand.class);
- private String queryTwo = null;
- private String queryName = "";
- private boolean searchForName = false;
- private boolean searchForInfoPage = false;
- private String sortBy="kw"; // defualtsøket er på keyword
+ private static final Logger LOG = Logger
+ .getLogger(CatalogueSearchCommand.class);
+ private String queryTwo = null;
- /** Creates a new catalogue search command.
- * TODO. Rewrite from scratch. This is insane.
- **/
- public CatalogueSearchCommand(final Context cxt, final DataModel
datamodel) {
- super(cxt, datamodel);
+ private String userSortBy = "kw"; // defualtsøket er på keyword
+ private static final String DEBUG_CONF_NFO = "CatalogueSearch Conf
details --> ";
- // hvis "where" parametern er sendt inn, så tar vi og leser inn query
fra
- // den.
- if(getSingleParameter("where") != null){
- final ReconstructedQuery rq =
createQuery(getSingleParameter("where"));
+ /**
+ * Creates a new catalogue search command.
+ *
+ */
+ public CatalogueSearchCommand(final Context cxt, final DataModel
datamodel) {
+ super(cxt, datamodel);
- GeoVisitor geo = new GeoVisitor();
- geo.visit(rq.getQuery().getRootClause());
+ final CatalogueSearchConfiguration conf =
(CatalogueSearchConfiguration) cxt
+ .getSearchConfiguration();
+ LOG.debug(DEBUG_CONF_NFO + conf.getSearchBy() + ' '
+ + conf.getQueryParameterWhere());
- queryTwo = geo.getQueryRepresentation();
- LOG.info("Dette ble det: "+queryTwo);
- }
+ // hvis "where" parametern er sendt inn, så tar vi og leser inn
query
+ // fra den
+ if (getSingleParameter("where") != null) {
+ final ReconstructedQuery rq =
createQuery(getSingleParameter("where"));
- if(getSingleParameter("userSortBy")!=null
- && getSingleParameter("userSortBy").length()>0){
- sortBy=getSingleParameter("userSortBy");
- }else{
- sortBy="kw";
- }
+ GeoVisitor geo = new GeoVisitor();
+ geo.visit(rq.getQuery().getRootClause());
+ queryTwo = geo.getQueryRepresentation();
+ LOG.info("Dette ble det: " + queryTwo);
+ }
- }
+ if (getSingleParameter("userSortBy") != null
+ && getSingleParameter("userSortBy").length() > 0
+ &&
getSingleParameter("userSortBy").equals("name")) {
+ userSortBy = "name";
+ } else {
+ userSortBy = "kw";
+ }
- /** TODO comment me. **/
- public SearchResult execute() {
- // kjør søk for keyword.
- searchForName=false;
- super.performQueryTransformation();
- SearchResult result = super.execute();
+ if ("exact".equals(conf.getSearchBy())) {
+ userSortBy = "exact";
+ }
+ }
- searchForName=true;
- super.performQueryTransformation();
- // søk etter firmanavn
- SearchResult nameQueryResult = super.execute();
+ /** TODO comment me. * */
+ public SearchResult execute() {
+ // kjør søk
+ SearchResult result = super.execute();
- // hvis det er angitt at det er sortert på navn,
- // viser vi treff på navn først. Hvis det er angitt att
- // det skal sorteres på keywords, viser vi keywords først.
- if(sortBy.equals("kw")){
- result.getResults().addAll(nameQueryResult.getResults());
-
result.setHitCount(result.getHitCount()+nameQueryResult.getHitCount());
- }else{
- nameQueryResult.getResults().addAll(result.getResults());
-
nameQueryResult.setHitCount(result.getHitCount()+nameQueryResult.getHitCount());
+ // konverter til denne.
+ List<CatalogueSearchResultItem> nyResultListe = new
ArrayList<CatalogueSearchResultItem>();
- result = nameQueryResult;
- }
+ // TODO: get all keys to lookup and execute one call instead of
+ // iterating like this...
+ Iterator iter = result.getResults().listIterator();
+ while (iter.hasNext()) {
+ BasicSearchResultItem basicResultItem =
(BasicSearchResultItem) iter
+ .next();
- // konverter til denne.
- List<CatalogueSearchResultItem> nyResultListe = new
ArrayList<CatalogueSearchResultItem>();
+ CatalogueSearchResultItem resultItem = new
CatalogueSearchResultItem();
+ for (Object o : basicResultItem.getFieldNames()) {
+ String s = (String) o;
+ String v = basicResultItem.getField(s);
+ resultItem.addField(s, v);
+ }
- //TODO: get all keys to lookup and execute one call instead of
iterating like this...
- Iterator iter = result.getResults().listIterator();
+ nyResultListe.add(resultItem);
+ }
+ // fjern de gamle BasicResultItems, og erstatt dem med nye
+ // CatalogueResultItems.
+ result.getResults().clear();
+ result.getResults().addAll(nyResultListe);
- while (iter.hasNext()) {
- BasicSearchResultItem basicResultItem = (BasicSearchResultItem)
iter.next();
+ return result;
+ }
- CatalogueSearchResultItem resultItem = new
CatalogueSearchResultItem();
- for(Object o : basicResultItem.getFieldNames()){
- String s = (String) o;
- String v = basicResultItem.getField(s);
- resultItem.addField(s,v);
- }
+ @Override
+ public String getTransformedQuery() {
+ String query = super.getTransformedQuery();
- nyResultListe.add(resultItem);
- }
+ if (queryTwo != null && queryTwo.length() > 0 &&
!query.equals("*")) {
+ query += ") " + QL_AND + " (" + queryTwo + ")";
+ query = "(" + query;
+ } else if (query.equals("*")) {
+ query = queryTwo;
+ }
- // fjern de gamle BasicResultItems, og erstatt dem med nye
CatalogueResultItems.
- result.getResults().clear();
- result.getResults().addAll(nyResultListe);
+ return query;
+ }
- return result;
- }
- @Override
- public String getTransformedQuery() {
- String query = super.getTransformedQuery();
+ @Override
+ protected String getSortBy() {
+ // hvis man søker etter firmanavn, sorterer vi etter "iyprpnavn"
+ // ellers søker vi etter keywords, og da sorterer vi etter
"iyprpkw"
+ // istedet.
+ String sortBy = "iyprpkw";
+ if ("name".equalsIgnoreCase(userSortBy)
+ || "exact".equalsIgnoreCase(userSortBy)) {
+ sortBy = "iyprpnavn";
+ }
+ return sortBy;
+ }
- if(queryTwo!=null&&queryTwo.length()>0){
- query += ") " + QL_AND +" (" + queryTwo+")";
- query= "("+query;
- }
+ /**
+ * Query builder for creating a query syntax similar to sesam's own.
+ */
+ private final class GeoVisitor extends AbstractReflectionVisitor {
- return query;
- }
+ // AbstractReflectionVisitor overrides
+ // ----------------------------------------------
+ private final StringBuilder sb = new StringBuilder();
- /**
- * Legg til iypcfspkeywords forran alle ord.
- *
- */
- protected void visitImpl(final LeafClause clause) {
+ /**
+ * Returns the generated query.
+ *
+ * @return The query.
+ */
+ String getQueryRepresentation() {
+ return sb.toString();
+ }
+ /**
+ * [EMAIL PROTECTED]
+ */
+ protected void visitImpl(final LeafClause clause) {
+ if (clause.getTerm() != null &&
clause.getTerm().length() > 0) {
+ sb.append("iypcfgeo:" + clause.getTerm());
+ }
+ }
- String transformed = getTransformedTerm(clause);
+ protected void visitImpl(final AndClause clause) {
+ clause.getFirstClause().accept(this);
+ if (!(clause.getSecondClause() instanceof NotClause)) {
+ sb.append(QL_AND);
+ }
+ clause.getSecondClause().accept(this);
+ }
- if(searchForName){
- LOG.info("Add transformed to name query \""+transformed+"\"");
- appendToQueryRepresentation("(");
- appendToQueryRepresentation("(iypcfphnavn:"+transformed+")");
- appendToQueryRepresentation(" ANDNOT (");
- appendToQueryRepresentation("(lemiypcfkeywords:"+transformed+")
OR ");
-
appendToQueryRepresentation("(lemiypcfkeywordslow:"+transformed+")");
- appendToQueryRepresentation(")");
- appendToQueryRepresentation(")");
- }else{
- LOG.info("Add transformed to keyword query
\""+transformed+"\"");
- appendToQueryRepresentation("(lemiypcfkeywords:"+transformed+"
ANY lemiypcfkeywordslow:"+transformed+")");
- }
- }
+ /**
+ * [EMAIL PROTECTED]
+ */
+ protected void visitImpl(final OrClause clause) {
+ sb.append("(");
+ clause.getFirstClause().accept(this);
+ sb.append(QL_OR);
- @Override
- protected String getSortBy() {
- // hvis man søker etter firmanavn, sorterer vi etter "iyprpnavn"
- // ellers søker vi etter keywords, og da sorterer vi etter "iyprpkw"
istedet.
- String sortBy="iyprpkw";
- if(searchForName){
- sortBy="iyprpnavn";
- }
- return sortBy;
- }
+ clause.getSecondClause().accept(this);
+ sb.append(")");
+ }
+ /**
+ * [EMAIL PROTECTED]
+ */
+ protected void visitImpl(final DefaultOperatorClause clause) {
+ clause.getFirstClause().accept(this);
+ if (!(clause.getSecondClause() instanceof NotClause)) {
+ sb.append(QL_AND);
+ }
+ clause.getSecondClause().accept(this);
+ }
+ /**
+ * [EMAIL PROTECTED]
+ */
+ protected void visitImpl(final NotClause clause) {
- /**
- * Query builder for creating a query syntax similar to sesam's own.
- */
- private final class GeoVisitor extends AbstractReflectionVisitor{
+ final String childsTerm =
clause.getFirstClause().getTerm();
+ if (childsTerm != null && childsTerm.length() > 0) {
+ sb.append(QL_ANDNOT);
+ clause.getFirstClause().accept(this);
+ }
+ }
- // AbstractReflectionVisitor overrides
----------------------------------------------
- private final StringBuilder sb = new StringBuilder();
-
- /**
- * Returns the generated query.
- *
- * @return The query.
- */
- String getQueryRepresentation() {
- return sb.toString();
- }
-
- /**
- * [EMAIL PROTECTED]
- */
- protected void visitImpl(final LeafClause clause) {
- if(clause.getTerm()!=null && clause.getTerm().length()>0){
- sb.append("iypcfgeo:"+clause.getTerm());
- }
- }
-
- protected void visitImpl(final AndClause clause) {
- clause.getFirstClause().accept(this);
- if(!(clause.getSecondClause() instanceof NotClause)){
- sb.append(QL_AND);
- }
- clause.getSecondClause().accept(this);
- }
-
- /**
- * [EMAIL PROTECTED]
- */
- protected void visitImpl(final OrClause clause) {
- sb.append("(");
- clause.getFirstClause().accept(this);
-
- sb.append(QL_OR);
-
- clause.getSecondClause().accept(this);
- sb.append(")");
- }
-
- /**
- * [EMAIL PROTECTED]
- */
- protected void visitImpl(final DefaultOperatorClause clause) {
- clause.getFirstClause().accept(this);
- if(!(clause.getSecondClause() instanceof NotClause)){
- sb.append(QL_AND);
- }
- clause.getSecondClause().accept(this);
- }
-
- /**
- * [EMAIL PROTECTED]
- */
- protected void visitImpl(final NotClause clause) {
-
- final String childsTerm = clause.getFirstClause().getTerm();
- if (childsTerm != null && childsTerm.length() > 0) {
- sb.append(QL_ANDNOT);
- clause.getFirstClause().accept(this);
- }
- }
-
-
-
- /**
- * [EMAIL PROTECTED]
- */
- protected void visitImpl(final AndNotClause clause) {
- sb.append(QL_ANDNOT);
- clause.getFirstClause().accept(this);
- }
- }
+ /**
+ * [EMAIL PROTECTED]
+ */
+ protected void visitImpl(final AndNotClause clause) {
+ sb.append(QL_ANDNOT);
+ clause.getFirstClause().accept(this);
+ }
+ }
}
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/CatalogueSearchConfiguration.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/CatalogueSearchConfiguration.java
2007-03-01 13:42:36 UTC (rev 4529)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/CatalogueSearchConfiguration.java
2007-03-02 09:21:17 UTC (rev 4530)
@@ -20,4 +20,25 @@
super(asc);
}
+
+ private String queryParameterWhere;
+ private String searchBy;
+
+ public String getQueryParameterWhere() {
+ return queryParameterWhere;
+ }
+
+ public void setQueryParameterWhere(String queryParameterWhere) {
+ this.queryParameterWhere = queryParameterWhere;
+ }
+
+ public String getSearchBy() {
+ return searchBy;
+ }
+
+ public void setSearchBy(String searchBy) {
+ this.searchBy = searchBy;
+ }
+
+
}
Added:
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueEmptyQueryQueryTransformer.java
===================================================================
---
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueEmptyQueryQueryTransformer.java
(rev 0)
+++
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueEmptyQueryQueryTransformer.java
2007-03-02 09:21:17 UTC (rev 4530)
@@ -0,0 +1,46 @@
+// Copyright (2006-2007) Schibsted Søk AS
+package no.schibstedsok.searchportal.query.transform;
+
+import java.util.Map;
+
+import no.schibstedsok.searchportal.query.AndClause;
+import no.schibstedsok.searchportal.query.AndNotClause;
+import no.schibstedsok.searchportal.query.Clause;
+import no.schibstedsok.searchportal.query.DefaultOperatorClause;
+import no.schibstedsok.searchportal.query.DoubleOperatorClause;
+import no.schibstedsok.searchportal.query.LeafClause;
+import no.schibstedsok.searchportal.query.NotClause;
+import no.schibstedsok.searchportal.query.OperationClause;
+import no.schibstedsok.searchportal.query.OrClause;
+import no.schibstedsok.searchportal.query.PhraseClause;
+import no.schibstedsok.searchportal.query.transform.QueryTransformer.Context;
+import
no.schibstedsok.searchportal.query.transform.TokenMaskQueryTransformer.Mask;
+
+import org.apache.log4j.Logger;
+
+/**
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Daniel Engfeldt</a>
+ * @version <tt>$Revision: 3359 $</tt>
+ */
+public final class CatalogueEmptyQueryQueryTransformer extends
AbstractQueryTransformer {
+
+ private static final Logger LOG = Logger
+ .getLogger(CatalogueEmptyQueryQueryTransformer.class);
+
+ private static final String BLANK = "*";
+
+ /** TODO comment me. * */
+ protected void visitImpl(final LeafClause clause) {
+ if (getContext().getQuery().isBlank()) {
+ getContext().getTransformedTerms().put(clause, BLANK);
+ }
+ }
+
+
+
+ private Map<Clause,String> getTransformedTerms() {
+ return getContext().getTransformedTerms();
+ }
+
+}
Added:
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueExactTitleMatchQueryTransformer.java
===================================================================
---
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueExactTitleMatchQueryTransformer.java
(rev 0)
+++
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueExactTitleMatchQueryTransformer.java
2007-03-02 09:21:17 UTC (rev 4530)
@@ -0,0 +1,92 @@
+// Copyright (2006-2007) Schibsted Søk AS
+package no.schibstedsok.searchportal.query.transform;
+
+import java.util.Map;
+
+import no.schibstedsok.searchportal.query.AndClause;
+import no.schibstedsok.searchportal.query.AndNotClause;
+import no.schibstedsok.searchportal.query.Clause;
+import no.schibstedsok.searchportal.query.DefaultOperatorClause;
+import no.schibstedsok.searchportal.query.DoubleOperatorClause;
+import no.schibstedsok.searchportal.query.LeafClause;
+import no.schibstedsok.searchportal.query.NotClause;
+import no.schibstedsok.searchportal.query.OperationClause;
+import no.schibstedsok.searchportal.query.OrClause;
+import no.schibstedsok.searchportal.query.PhraseClause;
+import no.schibstedsok.searchportal.query.parser.WordClauseImpl;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Transforms the query into <br/> titles:^"query"$ <br/> Ensures that only an
+ * exact match within the titles field is returned.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Michael Semb Wever</a>
+ * @version <tt>$Revision: 3359 $</tt>
+ */
+public final class CatalogueExactTitleMatchQueryTransformer extends
+ AbstractQueryTransformer {
+
+ private static final Logger LOG = Logger
+
.getLogger(CatalogueExactTitleMatchQueryTransformer.class);
+
+ private transient boolean writtenStart = false;
+
+ private transient Boolean visitingLast = null;
+
+ private transient StringBuffer sb = new StringBuffer();
+
+ /**
+ *
+ * @param clause
+ * The clause to prefix.
+ */
+ public void visitImpl(final LeafClause clause) {
+
+ if (!writtenStart) {
+
+ sb = new StringBuffer();
+ sb.append("iypnavnvisningnorm:\""
+ + getTransformedTerms().get(clause));
+
+ writtenStart = true;
+ // also, if we got here without giving visitingLast a
value then
+ // this is the only LeafClause in the query
+ visitingLast = null == visitingLast;
+
+ getTransformedTerms().put(clause, "");
+ }
+
+ if (!visitingLast && !visitingLast)
+ sb.append(getTransformedTerms().get(clause));
+
+ if (visitingLast) {
+ sb.append(" " + getTransformedTerms().get(clause) +
"\"");
+ getTransformedTerms().put(clause, sb.toString().trim());
+ }
+
+ }
+
+ private Map<Clause, String> getTransformedTerms() {
+ return getContext().getTransformedTerms();
+ }
+
+ /**
+ * [EMAIL PROTECTED]
+ */
+ protected void visitImpl(final DefaultOperatorClause clause) {
+ // remember what visitingLast was
+ final Boolean original = visitingLast;
+ // turn it off. left child can never be the last term in the
query.
+ visitingLast = false;
+ clause.getFirstClause().accept(this);
+ // restore visitingLast.
+ visitingLast = original;
+ if (null == visitingLast) {
+ // if it is yet to be assigned an value (ie this is the
topmost
+ // DoubleOperatorClause) then assign true.
+ visitingLast = true;
+ }
+ clause.getSecondClause().accept(this);
+ }
+}
Added:
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueQueryTransformer.java
===================================================================
---
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueQueryTransformer.java
(rev 0)
+++
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/CatalogueQueryTransformer.java
2007-03-02 09:21:17 UTC (rev 4530)
@@ -0,0 +1,99 @@
+// Copyright (2006-2007) Schibsted Søk AS
+package no.schibstedsok.searchportal.query.transform;
+
+import java.util.Map;
+
+import no.schibstedsok.searchportal.query.AndClause;
+import no.schibstedsok.searchportal.query.AndNotClause;
+import no.schibstedsok.searchportal.query.Clause;
+import no.schibstedsok.searchportal.query.DefaultOperatorClause;
+import no.schibstedsok.searchportal.query.DoubleOperatorClause;
+import no.schibstedsok.searchportal.query.LeafClause;
+import no.schibstedsok.searchportal.query.NotClause;
+import no.schibstedsok.searchportal.query.OperationClause;
+import no.schibstedsok.searchportal.query.OrClause;
+import no.schibstedsok.searchportal.query.PhraseClause;
+import no.schibstedsok.searchportal.query.transform.QueryTransformer.Context;
+import
no.schibstedsok.searchportal.query.transform.TokenMaskQueryTransformer.Mask;
+
+import org.apache.log4j.Logger;
+
+/**
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Daniel Engfeldt</a>
+ * @version <tt>$Revision: 3359 $</tt>
+ */
+public final class CatalogueQueryTransformer extends AbstractQueryTransformer {
+
+ private static final Logger LOG = Logger
+ .getLogger(CatalogueQueryTransformer.class);
+
+ /** TODO comment me. * */
+ protected void visitImpl(final LeafClause clause) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("(");
+ sb.append("(iypcfphnavn:" + getTransformedTerms().get(clause)
+ ") ANY ");
+ sb.append("(lemiypcfkeywords:" +
getTransformedTerms().get(clause) + ") ANY");
+ sb.append("(lemiypcfkeywordslow:" +
getTransformedTerms().get(clause) + ")");
+ sb.append(")");
+ getContext().getTransformedTerms().put(clause, sb.toString());
+ }
+
+
+ /**
+ * Legg til iypcfnavn forran alle ord.
+ *
+ */
+ protected void visitImpl(final PhraseClause clause) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("(");
+ sb.append("(iypcfnavn:" + getTransformedTerms().get(clause) +
") ANY ");
+ sb.append("(lemiypcfkeywords:" +
getTransformedTerms().get(clause) + ") ANY");
+ sb.append("(lemiypcfkeywordslow:" +
getTransformedTerms().get(clause) + ")");
+ sb.append(")");
+ getContext().getTransformedTerms().put(clause, sb.toString());
+ }
+
+ private Map<Clause,String> getTransformedTerms() {
+ return getContext().getTransformedTerms();
+ }
+
+ protected void visitImpl(final AndClause clause) {
+ clause.getFirstClause().accept(this);
+ clause.getSecondClause().accept(this);
+ }
+
+ /**
+ * [EMAIL PROTECTED]
+ */
+ protected void visitImpl(final OrClause clause) {
+ clause.getFirstClause().accept(this);
+ clause.getSecondClause().accept(this);
+ }
+
+ /**
+ * [EMAIL PROTECTED]
+ */
+ protected void visitImpl(final DefaultOperatorClause clause) {
+ clause.getFirstClause().accept(this);
+ clause.getSecondClause().accept(this);
+ }
+
+ /**
+ * [EMAIL PROTECTED]
+ */
+ protected void visitImpl(final NotClause clause) {
+
+ final String childsTerm = clause.getFirstClause().getTerm();
+ if (childsTerm != null && childsTerm.length() > 0) {
+ clause.getFirstClause().accept(this);
+ }
+ }
+
+ /**
+ * [EMAIL PROTECTED]
+ */
+ protected void visitImpl(final AndNotClause clause) {
+ clause.getFirstClause().accept(this);
+ }
+}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits