Extend search index

How can I extend searchindex (per variant) to contain more data than it has today?
I want to add WareHouseID - InStockQuantity - ErpStatus to easier add a filter for product listning “Only show products in stock”

Litium version: 7.4

(Assuming you are using Lucene.NET)

Quantity for each warehouse and variant is already added into the index. You can add the tag to your query by using TagNames.GetTagNameForWarehouseQuantity(inventorySystemId) to resolve the correct tag name.

So filtering on stock balance when searching could look something like:

var country = _requestModelAccessor.RequestModel.CountryModel;

// get all inventories used for the current country
var inventorySystemIds = _inventoryService.GetAll()
	.Where(inventory => inventory.CountryLinks
		.Any(x => x.CountrySystemId == country.SystemId))
	.Select(x => x.SystemId)
	.ToList();

// add an optional clause where the stock balance should be 1-999999 for any of the connected inventories
var inventoryQuantityClause = new OptionalTagClause();
foreach (var inventory in inventorySystemIds)
{
	inventoryQuantityClause.Tags.Add(new RangeTag(TagNames.GetTagNameForWarehouseQuantity(inventory), 1, 999999));
}

_request.FilterTags.Add(inventoryQuantityClause);

You can add an IIndexingProviderPreProcessor to add data for ErpStatus into the index. In the Accelerator there’s an example called CampaignIndexingProviderPreProcessor you could have a look at. There’s an older extension method you could use to resolve a fitting name for the tag, TagNames.GetTagNameForWarehouseArticleStatus(inventorySystemId);

Keep in mind that if you’re merging variant data in the index, if any of the merged variant has stock it will be included.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.