2013-06-21 50 views
1

我有4个索引文件。 1.产品类别,2.产品,3.产品详细信息4.卖家。我需要在所有四个文档的所有字段中执行关键字搜索并返回排名最高的产品。排序/分数如何在solr/lucene/elastic search中加入文档?

例产品类别:电子,布和等

举例产品:电视,移动在类电子

例产品详情:尺寸14,黑色品牌三星电视

例卖家:经销商1,经销商2

实施例的搜索查询: “三星LED电视”

关系的交叉这些文件是用外键维护的。例如:产品包装将具有类别主键。

我需要一个关键字搜索,它应该匹配这4个文档的所有字段,并根据等级返回产品。

我会通过从孩子搜索,分别搜索卖家字段,产品详细信息,产品和类别来处理此问题,并最终加入结果。问题在于排名。用户关键字中一些更相关的产品在结果中下降。

有什么最好的方式来加入文件和搜索一些关键字的连接文件的所有字段,以便结果更具相关性和排序?

回答

1

加入文档之前,最好的方法是将文档添加到索引中。 Lucene不是一个关系数据库。有一些软件包和类似的功能可以提供类似的功能,但通常在文档本身提供所有希望搜索文档的内容时可以更好地满足您的需求。我相信你想在这里寻找产品,因此你可以创建一个产品文档中包含的字段:

Name:TV 
Category:Electronics Entertainment 
Seller:Dealer1 Dealer2 
Details:14 in size black etc etc etc 
text:TV Electronics Entertainment Dealer1 Dealer2 14 in size black etc etc etc 

以上text字段添加到提供的字段加入文件中都在一起,轻松地搜索任何东西附加到文档中,这似乎对您的情况有所帮助,因为您可以在搜索时将text设置为默认字段,或者运行text:(samsung LED TV)之类的查询。