Mongodb+Solr table 电子商务列表搜索关系
Mongodb+Solr table relations for Ecommerce listings search
我一直在使用 mongodb 开发电子商务应用程序。现在我计划将我现有的电子商务基础设施与 solr 集成以管理产品目录的显示。我的主要想法是合并以下功能:
- 分类导航
- 刻面
- Geo-Targeting
- 自动建议
这是我想重新创建的应用程序布局示例:
目前我在 mongodb 中有以下 collections:
Products: {
"_id" : ObjectId("568887fc14a9962460fbbcbd"),
"date_created" : "2014-10-01T00:00:00Z",
"date_updated" : "2014-10-01T00:00:00Z",
"name" : "Iphone 6 64gb",
"price" : "100",
"summary" : "Iphone 6 64gb",
"delivery" : "Shipment",
"shipment_location" : "USA",
"shipment_weight" : "1",
"shipment_package_quantity" : "1",
"options" : {
"id" : "price-1234567890",
"value" : "111",
"stock_level" : "1",
"currency" : "usd"
},
"attributes" : {
"id" : "atr_1",
"name" : "memory",
"values" : "64gb"
},
"images" : {
"id" : "price-1234567890",
"caption" : "image",
"file" : [
{
"id" : "price-1234567890-1",
"date_uploaded" : "2014-10-01T00:00:00Z",
"length" : "123",
"md5" : "hasg",
"filename" : "price-1234567890-1",
"content_type" : "PNG",
"metadata" : "price-1324567890-1",
"data" : "price-1234567890-1",
"url" : "/images/folder/mongodb/a.png"
}
]
},
"category_id" : "65",
"category_index" : {
"id" : "111",
"sort" : "price"
},
"stock" : {
"id" : "price-1234567890",
"date_created" : "2014-10-01T00:00:00Z",
"date_updated" : "2014-10-01T00:00:00Z",
"parent_id" : "",
"parent" : "111",
"number" : "111",
"quantity" : "11",
"variant_id" : "1",
"variant" : "11",
"last" : "1",
"prev_id" : "1",
"prev" : "1",
"level" : "1",
"reason" : "1",
"description" : "1",
"order_id" : "11",
"order" : "1"
},
"quantity_min" : "1",
"quantity_inc" : "1",
}
类别Collection:
{
"_id" : 3,
"date_created" : "2016-01-01T00:00:00Z",
"date_updated" : "2016-01-01T00:00:00Z",
"name" : "Computers",
"slug" : "Computers",
"description" : "Computers",
"meta_description" : "Computers",
"meta_keyword" : "Computers",
"navigation" : "true",
"top_id" : 3,
"top" : "true",
"parent_id" : 2,
"parent" : "Default",
"active" : "y",
"productype" : "simple",
"path" : "Computers",
"categoryids" : "2,3",
"children" : "yes",
}
分类法:
{
"_id" : ObjectId("56803181bf244c701d000170"),
"category_id" : "65",
"name" : "Names",
"expandable" : false,
"inputAsTree" : true,
"multiSelect" : true,
"mandatory" : false,
"version" : 9,
"createTime" : 1451240000.0000000000000000,
"lastUpdateTime" : 1451280000.0000000000000000,
}
分类术语collection:
{
"_id" : ObjectId("568073e5bf244c701d000179"),
"text" : "Jose",
"version" : 2,
"taxonomyid" : "56803181bf244c701d000170",
"orderValue" : 1600,
"expandable" : false,
"nativeLanguage" : "en",
"i18n" : {
"en" : {
"text" : "Jose",
"locale" : "en"
}
},
}
分类术语是指分类法。在第一个中,您可以定义主要名称,并在术语中定义与分类法(选项)有关系的术语。例如:分类法:名称。分类术语:bob-jose-pedro
任何人都可以阐明我必须做些什么来接近 mongo 中 collections 的拟议模式在 solr 中进行设计的集成:
- 分类导航:产品在整个虚拟店面的引导式导航。
- 分面:Auto-extract 产品信息,使客户能够按颜色、尺寸、品牌、当地可用性和价格进行过滤。
如何使用分类导航映射类别。?
我如何映射 taxonomy-terms 与分面。?
solr 是否为面提供 setup-configuration 区域?
或您认为可能更好的任何其他方法。
听起来这个电子商务应用程序是定制开发的,而不是托管在可能有 Solr 连接器的平台上,所以这将需要学习很多关于 Solr 的知识,并做很多定制-此搜索页面上的开发。
您的 Solr 产品集合至少需要包含以下字段:
- 产品 ID(用于链接回应用程序,或查询 mongo,等等...)
- 您需要搜索的所有文本(每个可搜索文本属性的一个字段,一个包含所有可搜索文本的大 "text_search" 字段,或者其他介于两者之间。)
- 您需要进行排序、筛选、评分(以及可选显示)的所有产品attributes/fields - 您可以选择通过以下方式查询mongo用于检索每个搜索结果显示信息的产品 ID。
- 所有你想要分面计数的属性(多值)。这可能包括适用的 category_slugs、taxonomy_terms 和产品属性,例如 颜色、尺码、品牌,local_availability 和价格。
将您的集合视为搜索所需的所有产品(及相关)数据的老式 denormalized/flattened 视图。
(a) 分类导航:产品在整个虚拟店面中带有引导式导航。
查看 Solr 的 Hierarchical Faceting 页面
(b) Faceting:自动提取产品信息,使客户能够按颜色、尺寸、品牌、当地可用性和价格进行过滤。
Solr 将 generate facet counts 请求的 字段 的所有值(存在于搜索结果中)。这意味着您需要为集合中的每个可分面属性设置一个字段。你必须直接 define/map 这些。
我一直在使用 mongodb 开发电子商务应用程序。现在我计划将我现有的电子商务基础设施与 solr 集成以管理产品目录的显示。我的主要想法是合并以下功能: - 分类导航 - 刻面 - Geo-Targeting - 自动建议
这是我想重新创建的应用程序布局示例:
目前我在 mongodb 中有以下 collections:
Products: {
"_id" : ObjectId("568887fc14a9962460fbbcbd"),
"date_created" : "2014-10-01T00:00:00Z",
"date_updated" : "2014-10-01T00:00:00Z",
"name" : "Iphone 6 64gb",
"price" : "100",
"summary" : "Iphone 6 64gb",
"delivery" : "Shipment",
"shipment_location" : "USA",
"shipment_weight" : "1",
"shipment_package_quantity" : "1",
"options" : {
"id" : "price-1234567890",
"value" : "111",
"stock_level" : "1",
"currency" : "usd"
},
"attributes" : {
"id" : "atr_1",
"name" : "memory",
"values" : "64gb"
},
"images" : {
"id" : "price-1234567890",
"caption" : "image",
"file" : [
{
"id" : "price-1234567890-1",
"date_uploaded" : "2014-10-01T00:00:00Z",
"length" : "123",
"md5" : "hasg",
"filename" : "price-1234567890-1",
"content_type" : "PNG",
"metadata" : "price-1324567890-1",
"data" : "price-1234567890-1",
"url" : "/images/folder/mongodb/a.png"
}
]
},
"category_id" : "65",
"category_index" : {
"id" : "111",
"sort" : "price"
},
"stock" : {
"id" : "price-1234567890",
"date_created" : "2014-10-01T00:00:00Z",
"date_updated" : "2014-10-01T00:00:00Z",
"parent_id" : "",
"parent" : "111",
"number" : "111",
"quantity" : "11",
"variant_id" : "1",
"variant" : "11",
"last" : "1",
"prev_id" : "1",
"prev" : "1",
"level" : "1",
"reason" : "1",
"description" : "1",
"order_id" : "11",
"order" : "1"
},
"quantity_min" : "1",
"quantity_inc" : "1",
}
类别Collection:
{
"_id" : 3,
"date_created" : "2016-01-01T00:00:00Z",
"date_updated" : "2016-01-01T00:00:00Z",
"name" : "Computers",
"slug" : "Computers",
"description" : "Computers",
"meta_description" : "Computers",
"meta_keyword" : "Computers",
"navigation" : "true",
"top_id" : 3,
"top" : "true",
"parent_id" : 2,
"parent" : "Default",
"active" : "y",
"productype" : "simple",
"path" : "Computers",
"categoryids" : "2,3",
"children" : "yes",
}
分类法:
{
"_id" : ObjectId("56803181bf244c701d000170"),
"category_id" : "65",
"name" : "Names",
"expandable" : false,
"inputAsTree" : true,
"multiSelect" : true,
"mandatory" : false,
"version" : 9,
"createTime" : 1451240000.0000000000000000,
"lastUpdateTime" : 1451280000.0000000000000000,
}
分类术语collection:
{
"_id" : ObjectId("568073e5bf244c701d000179"),
"text" : "Jose",
"version" : 2,
"taxonomyid" : "56803181bf244c701d000170",
"orderValue" : 1600,
"expandable" : false,
"nativeLanguage" : "en",
"i18n" : {
"en" : {
"text" : "Jose",
"locale" : "en"
}
},
}
分类术语是指分类法。在第一个中,您可以定义主要名称,并在术语中定义与分类法(选项)有关系的术语。例如:分类法:名称。分类术语:bob-jose-pedro
任何人都可以阐明我必须做些什么来接近 mongo 中 collections 的拟议模式在 solr 中进行设计的集成:
- 分类导航:产品在整个虚拟店面的引导式导航。
- 分面:Auto-extract 产品信息,使客户能够按颜色、尺寸、品牌、当地可用性和价格进行过滤。
如何使用分类导航映射类别。? 我如何映射 taxonomy-terms 与分面。? solr 是否为面提供 setup-configuration 区域?
或您认为可能更好的任何其他方法。
听起来这个电子商务应用程序是定制开发的,而不是托管在可能有 Solr 连接器的平台上,所以这将需要学习很多关于 Solr 的知识,并做很多定制-此搜索页面上的开发。
您的 Solr 产品集合至少需要包含以下字段:
- 产品 ID(用于链接回应用程序,或查询 mongo,等等...)
- 您需要搜索的所有文本(每个可搜索文本属性的一个字段,一个包含所有可搜索文本的大 "text_search" 字段,或者其他介于两者之间。)
- 您需要进行排序、筛选、评分(以及可选显示)的所有产品attributes/fields - 您可以选择通过以下方式查询mongo用于检索每个搜索结果显示信息的产品 ID。
- 所有你想要分面计数的属性(多值)。这可能包括适用的 category_slugs、taxonomy_terms 和产品属性,例如 颜色、尺码、品牌,local_availability 和价格。
将您的集合视为搜索所需的所有产品(及相关)数据的老式 denormalized/flattened 视图。
(a) 分类导航:产品在整个虚拟店面中带有引导式导航。
查看 Solr 的 Hierarchical Faceting 页面
(b) Faceting:自动提取产品信息,使客户能够按颜色、尺寸、品牌、当地可用性和价格进行过滤。
Solr 将 generate facet counts 请求的 字段 的所有值(存在于搜索结果中)。这意味着您需要为集合中的每个可分面属性设置一个字段。你必须直接 define/map 这些。