我们使用solr进行产品搜索。在使用solr时,我们需要处理“是”vs相关的“。例如,如果我现在搜索“刀”,我得到的刀刀比我想要的要高得多,因为我们携带了那么多实际的刀。鉴于这两种产品的名称都是“刀”(将“8”大厨刀“与”电动刀刀“相比较),而且它们都存在于刀类中,因此在我们目前的体制中,很难区分”厨师刀“在这个搜索术语中得分更高。”
我们有一种方法来解决这个问题,当产品被分类并放在与另一个类别相关的网站上时,这是一种与产品相关的标签。例如,切割板类别与刀类有关,但在这种情况下,刀类是“主”类。在这种情况下,我们可以实现我们想要的差异化,但这需要大量的人力和管理。
我很好奇solr中是否有我不知道的功能,它会解决这个问题,或者仅仅是我们需要调整存储东西的方式。
这是一个8“厨师刀医生和电动刀刀医生的例子
8英寸刀:
"productId": 9071,
"productName": "8\" Chinese Chef's Knife",
"text": [
"8\" Chinese Chef's Knife",
"Update International",
"KCC-8",
"Chinese Chef's Knives"
],
"productName_exact": "8\" Chinese Chef's Knife",
"manuf": "Update International",
"baseSku": "KCC-8",
"sku": [
"KCC-8"
],
"modelTypeDesc": "Chinese Chef's Knives",
"manufId": 74,
"categories": [
"Chef's Knives",
"Chinese Chef's Knives",
"Knife Sale"
],
"type": "Product",
"popularity": 4301,
"displayName": "Update International (KCC-8) - 8\" Chinese Chef's Knife",电刀磨刀:
"productId": 3267,
"productName": "Edlund Electric Knife Sharpener",
"text": [
"Edlund Electric Knife Sharpener",
"Edlund",
"395",
"Electric Knife Sharpeners"
],
"productName_exact": "Edlund Electric Knife Sharpener",
"manuf": "Edlund",
"baseSku": "395",
"sku": [
"395"
],
"modelTypeDesc": "Electric Knife Sharpeners",
"manufId": 22,
"categories": [
"Electric Knife Sharpeners",
"Knife Sharpeners"
],
"type": "Product",
"popularity": 53,
"displayName": "Edlund (395) - Edlund Electric Knife Sharpener",你会看到一个“受欢迎”的领域,我想使用,但问题是,考虑到该领域是基于有多好的销售,这可能是一个配件可能比项目本身卖得更好,但术语仍然应该符合项目本身的第一。
谢谢你的帮助。
发布于 2016-03-16 16:30:31
所以我想出了一个很好的方法来帮助那些想知道。我意识到,我可以非常肯定地假设,如果一个人在寻找一把刀,他的搜索词将以“刀”这个词结尾。如果他在寻找削刀器,他的搜索词将以“削刀器”这个词结尾。
在此情况下,我能够创建一个字段,该字段只对产品名称的最后一个字进行索引。所以,在刀的情况下,它只是“刀”。在刀磨刀的情况下,它只是“削刀器”。
然后我将该字段编入索引,然后使用比标准产品名称字段更高的boost值对其进行查询。重要的是,我打破了用户的搜索词,只使用了最后一个词。我使用了一个非常严格的关键字标记器和分析,以确保它只在几乎精确的情况下匹配。它上只有小写、拼写和同义词过滤器。
这就自动实现了我想要的目标。唯一的警告是,如果产品没有正确的命名,它就不会出现在您预期的位置。一个很好的例子是“刀套”,而不是“刀”。这两把刀都是刀,但在搜索刀的时候,一把就不会那么高了。但人们也可以说,这是按计划进行的。
https://stackoverflow.com/questions/25330161
复制相似问题