Author: daniele
Date: 2007-05-14 16:22:58 +0200 (Mon, 14 May 2007)
New Revision: 5073
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueBannersSearchCommand.java
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueSearchCommand.java
Log:
GULD-526: Splitting og joining av query for katalog sok.
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueBannersSearchCommand.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueBannersSearchCommand.java
2007-05-14 14:22:13 UTC (rev 5072)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueBannersSearchCommand.java
2007-05-14 14:22:58 UTC (rev 5073)
@@ -76,7 +76,7 @@
*/
@Override
public String getTransformedQuery() {
- return "iypcfbannerkw:"+super.getTransformedQuery()+queryGeoString;
+ return "iypcfbannerkw:"+super.getTransformedQuery();
}
/**
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-05-14 14:22:13 UTC (rev 5072)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueSearchCommand.java
2007-05-14 14:22:58 UTC (rev 5073)
@@ -75,6 +75,12 @@
*/
public final class CatalogueSearchCommand extends AdvancedFastSearchCommand {
+ /** boolean flags to which get set during visitor pass.
+ * used by getSortBy to determin which rank profile to use.
+ */
+ private boolean foundCompanyNameInQuery=false;
+ private boolean foundKeywordInQuery=false;
+
/** Logger for this class. */
private static final Logger LOG =
Logger.getLogger(CatalogueSearchCommand.class);
@@ -380,21 +386,32 @@
/**
* Set what to sort the resultset by.
- * The possible value is sort by company name, or by keywords.
+ * The possible value is sort by company name, or by keywords
+ * or even more advanced, by iypgeosortable
*
* This value is used by the call to Fast-servers, to specify
* which rank-profile to sort by.
*
- * The sorting may be altered if user has supplied the userSortBy
- * parameter.
+ * If keyword found, sort with keyword rank profile,
+ * else if company name found, sort with company name rank profile.
+ * if neither keyword or company name is found, use the value
+ * from modes.xml.
+ *
+ * The sorting can be overrided by user specified sorting, or if
+ * it is a geo search.
+ *
* @return the sorting to be used when executing the query.
*/
@Override
protected String getSortBy() {
String sortBy = super.getSortBy();
+
+ sortBy =
foundKeywordInQuery?SORTBY_KEYWORD:foundCompanyNameInQuery?SORTBY_COMPANYNAME:sortBy;
+
if ("name".equalsIgnoreCase(userSortBy)) {
sortBy = SORTBY_COMPANYNAME;
}
+
final ParametersDataObject pdo = datamodel.getParameters();
if(GeoSearchUtil.isGeoSearch(pdo)){
sortBy="iypgeosortable";
@@ -438,6 +455,17 @@
final Matcher m = p.matcher(getTransformedTerms().get(clause));
final boolean hasNotWordCharacters = m.find();
+
+ // check if this is a known keyword.
+
if(clause.getKnownPredicates().contains(TokenPredicate.COMPANY_KEYWORD_RESERVED)){
+ foundKeywordInQuery=true;
+ }
+
+ // check if this is a known company name.
+ if(clause.getKnownPredicates().contains(TokenPredicate.COMPANYRANK)
+ ||
clause.getKnownPredicates().contains(TokenPredicate.COMPANYENRICHMENT)){
+ foundCompanyNameInQuery=true;
+ }
if(hasNotWordCharacters){
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits