我是这个论坛的新手。我正在寻找您对我们的搜索要求之一的建议。
我们有要搜索的姓名,地址和其他相关数据的数据。搜索输入将是一个带有多个单词的文本字符串。搜索api应匹配输入字符串与完整数据集,包括名称,地址和其他数据。为了实现这一点,我使用copyField将所有必需的字段复制到solr confg中的搜索字段。我使用searchField作为可搜索的输入字符串。输入搜索字符串可以包含部分单词,如下例所示。
姓名:测试保险公司
地址:银河城123大道
电话:6781230000
solr创建索引后,可搜索字段将包含如下文档
searchField {
姓名:测试保险公司
地址:银河城123大道
电话:6781230000
}
最终用户可以输入搜索字符串,如“Test Company Main Ave”,搜索当前返回上述文档。但不是在顶部,我看到其他文件也被退回。
我将solr查询定义为“Test * Company Main Ave”,在第一个单词后添加“*”并反对searchFiled
在互联网上搜索几个论坛后,我已经采用了这种方法。如何在顶部获得最大匹配。不确定上述方法是否正确。
任何帮助表示感谢。
谢谢,
拉姆
答案 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