我正在为电子商务系统实施Lucene,需要将产品及其属性编入索引。但是,我不知道如何处理这个问题,因为每个产品都有一个完全独特的属性列表。
大多数在线示例显示了一个带有产品结构的lucene访问层,例如名称/标题/描述,有时甚至还有一个自定义字段,只为每个产品添加。
需要编制索引的两种产品的示例如下所示。正如您在本案中所看到的那样(尽管并非总是如此),但它们具有相似的属性,但也是唯一的属性。
ID - 1
Product - Electric Shower
Name - Triton t80Z
Description - Details about shower here...
Attributes
Color - Black
Power Rating - 7.5Kw
Temperature Control - Manual
Water Entry - Top Left
ID - 2
Product - Digital Shower
Name - Grohe Grotherm
Description - Details about shower here...
Attributes
Color - Chrome
Temperature Control - Thermostatic
Water Entry - Top Left
Flow Limit - 8 Litre/min
LCD Display - True
Control Panel - Wireless
Control Panel Range - 10m
鉴于这种情况,我如何索引上述产品并在lucence中创建一个查询,以查找网站上包含恒温控制属性的任何产品?
答案 0 :(得分:2)
与数据库不同,Lucene没有架构(至少在经典数据库意义上),因此您可以在任何给定时间自由添加任何属性(它们被称为fields
)。只需创建一个新的Field
,并使用相关的名称/值,将其添加到Document
即可。
Q> 我将如何< ..>在lucence中创建一个查询,以查找网站上包含恒温温度控制属性的任何产品?
A> 以下内容应该正常工作,前提是您将使用与索引文档相同的分析器:
Query q = new AnalyzingQueryParser(<params>).parse("temperature_control:Thermostatic")
;
深入了解详细信息,取决于温度控制的值是否来自预定义列表,以及您希望它们如何搜索(完全匹配VS单独的单词等)。这些将定义分析仪的设置。