Lucene - 具有独特属性的索引和搜索引擎

时间:2013-12-27 12:44:23

标签: lucene.net lucene

我正在为电子商务系统实施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中创建一个查询,以查找网站上包含恒温控制属性的任何产品?

1 个答案:

答案 0 :(得分:2)

与数据库不同,Lucene没有架构(至少在经典数据库意义上),因此您可以在任何给定时间自由添加任何属性(它们被称为fields)。只需创建一个新的Field,并使用相关的名称/值,将其添加到Document即可。

Q> 我将如何< ..>在lucence中创建一个查询,以查找网站上包含恒温温度控制属性的任何产品?

A> 以下内容应该正常工作,前提是您将使用与索引文档相同的分析器:

Query q = new AnalyzingQueryParser(<params>).parse("temperature_control:Thermostatic");

深入了解详细信息,取决于温度控制的值是否来自预定义列表,以及您希望它们如何搜索(完全匹配VS单独的单词等)。这些将定义分析仪的设置。