在solr管理页面选择core后点击“Query”进入网页查询页面,可以直接点击“Execute Query”查找所以文档,或者根据搜索需要定义各个参数。
查询表单各个参数的含义:
我们可以利用df参数指定搜索字段,也可以直接使用搜索词【product_name:直线轴承】(不包括【】,下同)来指定:
也可以通过多个字段和搜索词,实现fq的功能:
当我们在solr中对字段product_name搜索【直线轴承】的时候,实际上solr首先根据product_name的域类型对“直线轴承”进行了分词“直线/轴承”,然后传给q的值实际上是【直线 轴承】。可以看到下面结果中既有“直线轴承”也有“直线导轨”和“轴承”,实际上是对“直线”和“轴承”的搜索结果取了并集A∪B,或者理解成【直线 OR 轴承】:
如果我们不希望solr对“直线轴承”进行分词,可以用双引号将关键词进行处理【“直线轴承”】,这样得到的就是包含“直线轴承”这个词组的精确匹配结果:
如果在引号外添加字符邻近距离【“直线轴承”~1000】,相当于允许允许引号内分词但是距离要满足要求,当距离足够大时相当于【直线 AND 轴承】,但使用这种方法的好处是不需要再对“直线轴承”做处理。
搜索【直线 轴承】得到的是【直线】和【轴承】两个结果的并集,同样的,我们使用【直线 OR 轴承】也可以得到同样的结果:
如果我们希望搜索结果同时匹配“直线”和“轴承”,可以使用【直线 AND 轴承】,即对“直线”和“轴承”的搜索结果取交集A∩B:
除了“OR”和“AND”之外,还可以使用“NOT”构建搜索词【直线 AND 轴承 NOT 密封】,排除结果中包含“密封”的结果:
一元运算符“+”和“-”在很多情况下可以等价于“AND”和“NOT”
【直线 AND 轴承】=【+直线 +轴承】
【直线 NOT 轴承】=【+直线 -轴承】