代码之家  ›  专栏  ›  技术社区  ›  kovshenin

搜索技术建议

  •  7
  • kovshenin  · 技术社区  · 14 年前

    我有 层次分类法 对所有具有多对多关系的条目进行处理后,所有条目现在都被分类到这些类别中,所有条目似乎都工作正常。现在,如果没有搜索选项,目录有什么用?

    这里有一些关于我的模型的更多细节:每个条目都有一个标题、描述、URL和几个社交档案:YouTube、Twitter、Flickr和其他一些。每个条目都可以附加一个徽标和一个隐藏的标记字段。此外,标题和描述以三种不同的语言存储。所以基本上我希望搜索结果是:

    1. 相关(包括分类)
    2. 可能是100%填写了个人资料的

    我试过狮身人面像,现在和Lucene一起工作,但从理论上看,我并没有得到正确的搜索结果。我希望填好的条目看起来比其他条目更高是有意义的,但是我不能真正计算出分数。如果整个描述中只有一个单词匹配,我不希望不相关的条目出现在顶部,因为标题更相关。

    所以我的问题是- (如果斯芬克斯和鲁肯不够好) 你会为这件事推荐的

    很酷的文章链接也很感谢!

    ,我不想重建谷歌:)

    4 回复  |  直到 14 年前
        1
  •  4
  •   Dewfy    14 年前

    我很确定鲁辛已经足够了。我们解决了类似的任务,做得很好。这里有一些提示,我建议您回顾一下我在Lucene.Net上的项目。

    • 类别在数据库中表示为整数键,因此每个文档都有多个类型号为“Category”的字段实例。例如文档:[1,2,5,10,'Wheel']-表示Wheel属于每个类别。

    不可搜索字段(徽标、社交资料):

    三种语言和多个字段:

    • 我们只有两种语言。因此,不同的产品标题可以存储在同一个Lucene的文档中,并且与产品的单个ID相关(正如我在ID引用DB之前所写的)。这允许您搜索产品,即使用户请求使用混合语言。
    • 显然,标题、标签和描述对搜索结果的权重不同。Lucene通过分配字段权重来处理它。
        2
  •  5
  •   Matthijs Bierman    14 年前

    好书: Lucene in Action (2nd edition)

    这个 Tf-Idf

    你基本上要做的就是 boost your title field ,因此它变得更加相关。你也可以 change the scoring mechanism

    玩得高兴。如果你搞不懂的话,会有很好的支持 Lucene mailinglist .

        3
  •  2
  •   Yuval F    14 年前

    基本上,你正在努力提高你的搜索相关性。 我建议你读一下格兰特·英格索尔的 Debugging Search Application Relevance Issues 还有他的 Optimizing Findability in Lucene and Solr Practical Relevance slides .

    对于不同的语言和方面,我建议您使用 Solr Solr Core 每种语言。

        4
  •  1
  •   Community CDub    8 年前

    Lucene或Solr会做这项工作。索尔是建立在鲁肯之上的, see here for more info

    我会和索尔一起去。下载+设置简单快捷。开始学习教程和我的 link collection . solr的关联性应该很好,而且很容易调整。

    然后选择dismax查询处理程序,您可以选择具有某些属性的文档。

    E、 g.对于完整配置文件的百分比,您可以定义一个单独的字段“配置文件完整性”,然后您可以将配置文件完整性添加到dismax handler的bf(boostfunction):配置文件越完整,这些文档将得到增强。

    bf=title^10 tags^5 profile_completeness^1

    “可能带有徽标的”可以通过boost查询解决: bq=logo:[* TO *]^1 . 在哪里? logo:[* TO *] 表示“仅包含字段徽标的文档”

    our approach

    如果你需要进一步的帮助,请不要犹豫发表评论。