问题描述
||
我有一些字段的Solr模式:
<field name=\"id\" type=\"integer\" indexed=\"true\" stored=\"true\" required=\"true\" multiValued=\"false\" />
<field name=\"title\" type=\"text\" indexed=\"true\" stored=\"true\" multiValued=\"false\" />
<field name=\"note\" type=\"text\" indexed=\"true\" stored=\"true\" multiValued=\"false\" />
现在我用查询来搜索它(%s是我的搜索字符串)
q={!boost b=recip(ms(Now,date),3.16e-11,1,1)}%s&defType=dismax&qf=title^100 note
而且我需要为每个记录添加类似标签的内容。
<field name=\"tags\" type=\"string\" indexed=\"true\" stored=\"false\" multiValued=\"true\" />
如果单词之一与\“ tags \”字段中的值之一匹配,我如何提高该记录的结果?
更新
刚刚发现,如果我从我的q中删除{!boost b = recip(ms(Now,date),3.16e-11,1)}},我的查询将完全按照我的要求工作。但这并没有
更新2
刚刚发现,以前的“刚刚发现”是完全错误的。我可以在某些搜索字符串中使用它,但对我来说效果不佳。我认为我需要这种行为:
在\“ title \”和\“ note \”字段中,我需要使用\“ AND \”搜索单词,但是在\“ tags \”字段中,我需要使用\“ OR \”搜索。我该如何使用dismax?
我现在尝试使用{!boost}和查询功能,但是没有任何好的结果
解决方法
您的查询看起来就像您从网络上复制的一样。
1.)确保您的环境中存在一个名为“ date”的字段。
2.)查看solr输出。如果您在Tomcat中运行solr,请查看catalina.out ...
...有关点击和错误的数量
如果单词之一与\“ tags \”字段中的值之一匹配,我如何提高该记录的结果?
查看相应的高程组件:http://wiki.apache.org/solr/QueryElevationComponent
, 您可以使用dismax的
bq
(提升查询)来实现。在此处阅读有关ѭ3的信息:http://wiki.apache.org/solr/DisMaxQParserPlugin#bq_.28Boost_Query.29
您将不得不将查询分解为单个单词和使用每个单词的搜索标签。因此,如果您的查询是\“ abc pqr \”,您将拥有:
q={!boost b=recip(ms(NOW,date),3.16e-11,1,1)}%s&defType=dismax&qf=title^100 note&bq=tags:abc OR tags:pqr