短语搜索是词项位置距离为0的邻近搜索。
词项距离为3表示查询两词之间词项距离<=3的搜索,两词项交换位置相当于移动了两个词项位置。
指定足够大的有效邻近值,可以匹配出文档中任意位置的词项,这与AND查询效果类似。词项邻近度查询还有一个副作用,在文档中词项越靠近,该邻接查询对应的相关度得分就越高。与组合查询相比,当词项距离较大时,使用邻近词搜索花费成本更高。
7.字符邻近不仅可以在词项之间进行邻近搜索,还可以对词项中的字符进行基于编辑距离的搜索,找到拼写相似的词项。字符邻近搜索的语法与词项邻近搜索类似,由于字符邻近搜索处理的是一个词项,因此不带引号。
1表示与搜索词项最多有一个字符的差距,包括多一个字符,少一个字符和一个字符不一样三种情况。
8.排除词项有时我们需要从查询中明确排除特定词项。在表达式上使用一元运算符-【减号】或在表达式之间使用NOT布尔运算符来排除词项。
或
9.区间搜索【方括号为闭区间,花括号为开区间】
有时候我们不希望查询表达式只匹配出一个值,而是匹配出值的整个区间。区间可以是数值区间、日期区间或字符串区间。区间搜索能够找到指定的一组值,其语法为字段名加冒号再加一个方括号。
如果没有指定区间的最大值和最小值,则需要对开区间的上限和下线使用通配符*
10.通配符搜索
有些情况下用户需要对Solr索引中单词或短语的变体进行匹配。对于用户输入的大多数关键词而言,词干提取这类技术让通配符搜索变得没那么重要了,然而对于查找以特定字符集开头的文档或替代单个字符的操作,通配符搜索还是还有用武之地的。
11.权重表达式
如果表达式后面指定了一个插入号【^】,无论是词项、短语还是组合表达式,都可以调整相关度权重。
12.特殊字符转义【分词器字段除外】
Solr中有些字符是保留字符,也就是说,它们被当做查询语法进行解析,而不是作为搜索词项。包括:
如果要搜索保留字符,必须将保留字符用引号括起来,或者使用反斜杠对其进行转义。关键词中处理保留字符的推荐做法是在传入Solr之前去除没有搜索价值的保留字符,或者对它们依次使用反斜杠进行转义。
当搜索字段为分词器字段时,保留字符会被分词过滤掉,因此搜索时不加保留字符也可以搜索到!