使用查找和搜索优化搜索

时间:2013-07-18 08:24:49

标签: algorithm search optimization search-engine

我有一个问题需要解决,这看起来对我很有挑战性,但我无法找到如何解决这个问题。我试过谷歌搜索,但没有找到任何具体的方向继续。

我正在寻找一些指针,想法,相关材料,某些算法的名称等。

问题

建立书名列表。例如。给出一个文字“如果我可以,我会笑和生活,像王子的魅力” 可能的书籍清单是

  • 如果我
  • 我会笑今晚
  • 笑和生活 在Timbackto
  • 像Prince Charm

希望有一个像上面这样的简短列表,而不是像。

这样的长列表
  • 如果 我死了
  • 我可能 今晚死去
  • 重生
  • 笑和
  • 直播 像国王一样
  • 王子 海伦陷入困境
  • 生活在山上的 魅力
  • ...

可用的内容

Available是库的API,提供查找和搜索服务。查找根据书的标题执行特定搜索,其中搜索提供了给定关键字的书籍列表。

一些额外的约束

  • 我们可以做些什么来使结果尽可能短?我们能找到最佳解决方案吗?
  • 我们如何才能最大限度地减少无与伦比的话语?
  • 我们如何使用本地兑现来改善对常用句子的搜索?

由于

1 个答案:

答案 0 :(得分:0)

一个天真的解决方案可能如下:

对于搜索中的每个单词,搜索所有匹配的书名。

然后,对于每个候选人,计算标记化书名与搜索中所有单词之间的相关分数。

基本相关函数可能类似于:

public double correlation(String[] a, String[] b, int offset)
{
  double ret = 0.;
  int maxI = Math.min(a.length, b.length - offset);
  for(int i = 0 ; i < maxI ; i++)
  {
    ret += a[i].equals(b[i+offset]) / maxI;
  }
}

偏移参数用于移位稳健。

然后,您可以使用此分数对书名进行排序。

干杯