我正在使用 Solr-5.0.0 。我在一个字段product_name
上搜索。
我需要添加一些规则来获得相关结果。
如果我搜索一个单词,如果存在完全匹配,则应首先进行。
例如:如果我搜索laptop
,则应首先使用笔记本电脑返回确切的product_name
。
如果我搜索多个单词,它应该遵守规则1.并且最少的单词长度距离名称首先出现。
例如:如果我搜索dell laptop
,它应该首先返回戴尔笔记本电脑而不是 dell inspiron laptop 。
如果我搜索字词,则不应返回包含with
或without
字词的结果。
例如:在搜索laptop bag
中,它不应该首先给包含或 dell笔记本电脑的戴尔笔记本电脑没有包结果。
如何在查询时实现这些基于搜索相关结果的规则?
我的应用程序是在java中,所以赞赏Java答案。
答案 0 :(得分:2)
首先,您应该使用dismax或edismax查询解析器而不是默认(lucene)。
然后,您可以使用不同的参数来提高相关性:
function validateEmail(email) {
var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
return re.test(email);
}
var str = "abc@abc.com;abc@abc.com; abc@a@bc.com ; abc@abc.com ;abc@abc.com;"
var emails = str.split(';');
var invalidEmails = [];
for (i = 0; i < emails.length; i++) {
if(!validateEmail(emails[i].trim())) {
invalidEmails.push(emails[i].trim())
}
}
alert(invalidEmails);
或with
字词的文档。 See here。例如:without