Solr edismax - 完全匹配与模糊

时间:2014-06-18 23:53:01

标签: solr solr4

  • 文档1:product_name:widget,model_number:abc123
  • 文档2:product_name:widget,model_number:def456
  • Doc 3:product_name:widget,model_number:ghi789

假设我们正在使用edismax,我们的用户输入他们的型号时会出错,并在搜索框中输入 widget abc12x 。我们在product_name上匹配所有三个文档,但在model_number上没有匹配,即使我们与文档1匹配。

处理这种情况的最佳方法是什么,以便我们可以让用户知道他们的model_number不是完全匹配但是Doc 1可能正是他们想要的?模糊搜索(abc12x~)显然会优雅地解决这个问题,但我们事先并不知道它是必需的,我们也不想肆无忌惮地使用它,最终只会损害搜索相关性,性能等。

可能是一个基本问题,但对Solr来说是新的。感谢。

2 个答案:

答案 0 :(得分:0)

你的指数会变得更大,但是N-gram是获得部分匹配的好方法。对于您的方案,edge N-gram可以使用。

答案 1 :(得分:0)

您可以在条款中添加字符邻近度修饰符,以便在查询时处理此问题:

q={!edismax}widget~3 abc12x~3

这将在索引中找到所提供搜索字词'edit distance'内的字词。这样做的好处是还可以匹配查询字词' acb123'到索引词'abc123'插入或删除一个字符都是一个编辑,交换两个字符是两个编辑。