Amazon MWS - getting product shipping costs - amazon-mws

For some skus I have to set specific shipping costs (or restrict shipping).
I use the following code/XML:
I tried this with MWS Scratchpad (https://mws.amazonservices.de/scratchpad/index.html)
Result = OK/Success/Done..., seems to work.
<?xml version="1.0" encoding="utf-8"?>
<AmazonEnvelope xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.02</DocumentVersion>
<MerchantIdentifier>XXXXXXX</MerchantIdentifier>
</Header>
<MessageType>Override</MessageType>
<Message>
<MessageID>1</MessageID>
<OperationType>Update</OperationType>
<Override>
<SKU>2224</SKU>
<ShippingOverride>
<ShipOption>Std DE Europe 5</ShipOption>
<Type>Additive</Type>
<ShipAmount currency="EUR">999.00</ShipAmount>
</ShippingOverride>
</Override>
</Message>
Want I'm looking for is a way to get this information back from amazon. Sku specific shipping costs or "isRestricted" value.
Is there any API method or can I get this data from a report ?
Any help ist appreciated. Thx a lot.

The GetMyPriceForSKU / GetMyPriceForASIN calls should return both the product price and shipping costs for your product. As stated in the MWS Products API Reference, page 41:
BuyingPrice - Contains pricing information that includes promotions and contains the
shipping cost.
Contains the following elements:
ListingPrice – The current price including any promotions that apply to the product.
Shipping – The shipping cost of the product. <--This should include your override info
LandedPrice – ListingPrice plus Shipping.
If you really need to get that information as part of a report, please check if the _GET_FLAT_FILE_OPEN_LISTINGS_DATA_ and _GET_MERCHANT_LISTINGS_DATA_ include that information.

Related

Solr - Boost result with exact match in the begginning of term

For an e-commerce store I have two products like these indexed in Solr
easyCover Silicone Protection Cover for Canon EOS 80D (Camouflage)
Canon EOS 80D DSLR Camera with 18-135mm Lens
Now, for a search query "Canon EOS 80D", I am getting product ranked as 1,2 as a result.
How can I rank Product 2, which is "Canon EOS 80D DSLR Camera with 18-135mm Lens" rank first?
Basically, I want to give more boost/weight-age to the product that has term in the beginning of the name phrase compared to those product that has same term not the first in the name phrase.
Pls advise.
I strongly advice not to use the token positions to boost your product over accessories. Imagine a customer is searching for "EOS 80D" - he will still get the silicone cover on first position.
A better solution would be to boost on a secondary field. Some ideas:
put a boost function on the price, as the main products usually have
higher prices as the accessories e.g bf=log(price)
use a field to categorize your items in products and accessories - and put a boost on this, e.g. bq=category:product
create a field to list the products that an assessory can be used
with. This will also help you to advertise the accessories in future.
But it will now also help to find the main products, by boosting the
the documents that don't contain references here.
I know that this answer is not a direct solution for the original question - but sometimes there are much simpler solutions for a problem if you look at it from a distance.

Foursquare API venues: only 60% matches our database

We have our own existing venue database we want to match with venues from the Foursquare Places API. The purpose of this is to retrieve and display certain info and content from Foursquare.
Currently we're having trouble matching the Foursquare venues with our own venues, only 60% matches. We pass the following parameters:
ll: latitude, longitude of the venue
query: name of the venue
categoryId: "4bf58dd8d48988d1fa931735" - ID of venue category
intent: browse
locale: en
radius: 100
We also tried the intent=match parameter but that gave us even less matches. Is there anything we can change that would improve our matching percentage or is this the best it can get?
Remember that foursquare's database is more or less user created. You have to account for user error, category mismatch or even the location data being off. Also even when using the FourSquare app or Swarm, all venues in the immediate area don't always show up in the results.
Example, searching for a Starbucks sometimes includes ones that may far, far away. The order of the the results are another story, it may not be distance, their search uses other factors relating to user preferences and popularity.
Sorry if this is not much of an answer but from using the apps and the api, I believe you'll have a hard time getting close to 100% without a lot of data manipulation and creative calls to their search.
To get a higher match rate use the venues/search api and only use parameters for ll and query.
Since Foursquare has such a deep category taxonomy, I would avoid using the categoryId parameter unless you are 100% certain it matches with what Foursquare has. Also, I wouldn't use intent=browse for any matching. By leaving out the intent param it will default to intent=checkin, which will be better for fuzzy matching.
If you need precision at the expense of match rate, you can set intent=match. This parameter is very sensitive but can accept things like phone number and address as well. This is great for when you don't have a lat/lng but since you do I wouldn't bother with this.

Grouping products that are the same but have slightly different titles/attributes

I am showcasing a large amount of products to my website.
I have to group similar products from different websites,
which I have already crawled to my DB.
So that when a product is searched, it also displays the same product from another website too.
I tried following methods
Grouping by product title
Result - Failed because Sony Xperia Z, Sony Xperia Z( black ) are same product but different title, so can’t be in same group.So error rate is very high.
Grouping by Attributes:
Products with similar attributes and value are placed in one group.
But its very slow and error rate is also high.
As different products from different companies might have same attributes.
Which is the best way to do this.
Please help me out.
Thanks in advance.Sorry for bad English.
I woult try to use your Grouping by Title solution but modified with RegEx. Or just use methods like:
title1.contains(title2)
title1.startsWith(title2)
There can't be a 100% error free solution so i would add a link like this:
"Not your Product? Klick here"
to remove the Product temporaly from this group and marks it as "not sure" so you can check it manually.
You can use the first letter and a dictionary and then use mysql fulltext search and order by relevance. The question isn't very clear. There is also the levensthein distance and the soundex() function.

Solr End User Query Translation

I am wondering if there is anyway to transform an end user query to a more complicated solr query based on some rules.
For example, if the user types in 32" television, then I want to use the dismax query parser to let solr take care of this user query string like below:
http://localhost:8983/solr/select/?q=32" television&defType=dismax
However, if the user types in "televisions on sale", then I want to do a regular search for token televisions and onsale flag is true like below:
http://localhost:8983/solr/select/?q=name:televisions AND isOnSale:true
Is this possible? Or must this logic require an advance search form where the user can clearly state in a checkbox that they only want on sale items.
Thanks.
Transforming the user query is quite possible. You can do it in following two ways
implement a Servlet Filter that listens to user query transforms it before dispatching it to solr request handler.
Look at query parser plugin in SOLR and implement one based on the existing one like standard query parser and modify it to apply transformation rules.
Let the search happen through the whole index and let the user choose. If a review shows up, render it with the appropriate view. If a product shows up, offer to search for more products.
Samsung 32 in reviews --read more
LG 32 in offers --find more like this
Your offers page can offer more options, such as filtering products on sale.
You may use a global boost field on documents. For example, a product on sale has a score of 1.0 while out of stock products have 0.33. A review of a new products has 1.0, old products have less.
Maybe you can set up the search so when someone searches for whatever have isOnSale as a secondary sort parameter. So by default sort by score then sort by isonsale or just sort by isonsale. That way you will still get all "television" ads in the results just the ones on sale are on top.

Solr: How can I implement timed discount availablity in solr

I'm attempting to use solr for a book store site.
Each book will have a price but on occasions this will be discounted. The discounted price exists for a defined time period but there may be many discount periods. Each discount will have a brief synopsis, start and end time.
A subset of the desired output would be as follows:
.......
"response":{"numFound":1,"start":0,"docs":[
{
"name":"The Book",
"price":"$9.99",
"discounts":[
{
"price":"$3.00",
"synopsis":"thanksgiving special",
"starts":"11-24-2011",
"ends":"11-25-2011",
},
{
"price":"$4.00",
"synopsis":"Canadian thanksgiving special",
"starts":"10-10-2011",
"ends":"10-11-2011",
},
]
},
.........
A requirement is to be able to search for just discounted publications. I think I could use date faceting for this ( return publications that are within a discount window ). When a discount search is performed no publications that are not currently discounted will be returned.
My question are:
Does solr support this type of sub documents
In the above example the discounts are the sub documents. I know solr is not a relational DB but I would like to store (and index ) the above representation in a single document if possible.
what is the best method to approach the above
I can see in many examples the authors tend to denormalize to solve similar problems. This suggest that for each discount I am required to duplicate the book data or form a document association. Which method would you advise?
It would be nice if solr could return a response structured as above.
Much Thanks
You could probably achieve something close enough by using Solr's dynamic fields to get:
.......
"response":{"numFound":1,"start":0,"docs":[
{
"name":"The Book",
"price":"$9.99",
"discount_1_price":"$3.00",
"discount_1_synopsis":"thanksgiving special",
"discount_1_starts":"11-24-2011",
"discount_1_ends":"11-25-2011",
"discount_2_price":"$4.00",
"discount_2_synopsis":"Canadian thanksgiving special",
"discount_2_starts":"10-10-2011",
"discount_2_ends":"10-11-2011",
},
........

Resources