Solr搜索排名和最佳匹配

时间:2014-02-26 00:34:07

标签: search solr

我是这个论坛的新手。我正在寻找您对我们的搜索要求之一的建议。

我们有要搜索的姓名,地址和其他相关数据的数据。搜索输入将是一个带有多个单词的文本字符串。搜索api应匹配输入字符串与完整数据集,包括名称,地址和其他数据。为了实现这一点,我使用copyField将所有必需的字段复制到solr confg中的搜索字段。我使用searchField作为可搜索的输入字符串。输入搜索字符串可以包含部分单词,如下例所示。

姓名:测试保险公司

地址:银河城123大道

电话:6781230000

solr创建索引后,可搜索字段将包含如下文档

searchField {

姓名:测试保险公司

地址:银河城123大道

电话:6781230000

}

最终用户可以输入搜索字符串,如“Test Company Main Ave”,搜索当前返回上述文档。但不是在顶部,我看到其他文件也被退回。

我将solr查询定义为“Test * Company Main Ave”,在第一个单词后添加“*”并反对searchFiled

在互联网上搜索几个论坛后,我已经采用了这种方法。如何在顶部获得最大匹配。不确定上述方法是否正确。

任何帮助表示感谢。

谢谢,

拉​​姆

2 个答案:

答案 0 :(得分:0)

您可以单独索引所有字段,也可以将searchField用作catchall。

使用Edismax搜索处理程序通过评分提升查询所有字段+还查询您的catchall字段。

例如

<str name="qf">
Name^2.0
Address^1.5
.
.
.
searchField^1.0
</str>

为了提高相关性,您还可以将每个字段编入索引两次,一次使用字符串类型,然后使用text_en类型,根据this

<str name="qf">
   Name^2.0
   Name_exact^5.0
   Address^1.5
   Address_exact^3.0
   .
   .
   .
   searchField^1.0
</str>

答案 1 :(得分:0)

从技术上讲,如果您想要匹配的文档之上有文档,那么它们是更好的匹配,因此这取决于它们为什么获得更高的相关性分数。尝试打开调试并查看首选文档上方的文档从哪里获得额外的相关性。

一旦你知道为什么他们会越来越高,那么你需要问问自己为什么你的首选文件应该是第一位的,这会使你的眼睛成为“更好”的匹配。

一旦你确定了为什么它应该是最重要的,那么你需要弄清楚如何索引和搜索内容,以便你希望首先出现的文件实际上首先出现,你可以像qux在他的答案中说的那样需要索引多个版本的数据,以便更好地匹配等。

的Si