搜索技术建议

kov*_*nin 7 lucene search full-text-search sphinx search-engine

这更像是一个理论问题,而不是实践.我正在开发一个项目,这是一个非常简单的链接目录.整个模型类似于Dmoz或Yahoo目录,除了每个条目都有一些额外的属性.

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

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

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

我已经尝试过Sphinx并且目前正在与Lucene合作,但似乎我在理论上没有得到正确的搜索.我希望填充的条目看起来应该高于其他条目,但我无法弄清楚得分.如果在整个描述中只有一个单词匹配,我不希望不相关的条目出现在顶部,因为标题更相关.

所以我的问题是 - 是否有任何书籍,技术或其他搜索引擎(如果Sphinx和Lucene不够好),你会推荐这个问题吗?我不仅希望完全控制搜索结果及其排名,还能为访问者提供正确且相关的信息.

关于酷文章的链接也很受欢迎!

没有,我并不想重建谷歌:)

谢谢 :)

Mat*_*man 5

优秀书:Lucene in Action(第2版)

当我们开始使用Lucene时,我们有了第一版,它会逐步引导您完成所需的一切.强烈推荐.第2版​​更新为最新版本(3.xx).

TF-IDF算法效果很好的(大)的文本,但是如果你有一个像记录结构就可能会适得其反:有几方面的文件被认为是更"相关"比很多方面的人.使用Lucene,你会得到它的工作,但你必须得到你的手.

您基本上要做的是提升您的标题字段,因此它变得更加相关.您还可以更改评分机制,为具有更多信息的文档分配更高的分数.

玩得开心.如果你无法弄明白,Lucene邮件列表上有很好的支持.


Dew*_*wfy 4

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

分类:

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

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

  • 当然,您可以在 lucene 的非索引字段中存储不可搜索的值。但是我们已经将所有产品相关信息存储在DB中以避免重建Lucene的索引。因此 Lucene 仅拥有产品 ID 以及已索引但已存储的关键字段值。

三种语言、多个领域:

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