我的SME有一条关于SOLR搜索相关性的规则。事情是这样的。
当单词"XX"、"YY"或"ZZ"出现在用户的搜索词中时,结果中的document_type"MMMM"会大大增加。(但只有到那时,这意味着我无法对文件本身进行称重。)
我可以想象构建一个"查询预处理器",检查指定术语"XX"等的存在,然后将它们插入到一个预构建的查询中,从而大大提高document_type"MMMM"。
这对我来说有点笨拙。在代码中这样做,并处理搜索中有两个规则中的术语的"联合"情况,听起来不像是我想维护的。
我想知道是否有办法利用SOLR来做到这一点?当预处理要进入SOLR的数据时,首先想到的是将这些特定的搜索词"XX"等放入任何document_type"MMMM"中。
仅仅将它们放入文档的文本中可能不会改变权重,尤其是如果该术语出现在其他文档中而不是该文档类型的一部分,这在我看来意味着在所有文档中都有一个"important_abbreviations"字段,并在所有查询中增加该通用字段的"标准"做法。我这么说是因为我不记得除了在查询中之外,还见过在文档中提升特定字段的方法。
我想知道是否有其他人解决了这个问题,如果是的话,是怎么解决的——因为这两个问题对我来说都有点笨拙
尝试一个可能的答案:请随时提出批评、建议或警告。
(我知道"缩写"字段感觉有点像同义词,如果你认为同义词是更好的方法,请评论。)
步骤1:在所有收款单的SOLR中创建一个"缩写"多值字段。
步骤2:当我构建要发送到SOLR的solrInputDocument时,将"XX"、"YY"、"ZZ"添加到所有类型为"MMMM"的文档中。
步骤3:在步骤2中添加缩写时,增加"缩写"字段,使生成的xml看起来像这样:
<field name="abbreviation" boost="5.0">myXXAbbreviationGoesHere</field>
[问题:我可以提升一些类型为"缩写"的字段而不是其他字段吗?换句话说,如果一个文档上的字段提升值为"2",而另一个文档中的字段提升为"5",而第三个文档上没有提升,SOLR会尊重/正确计算字段提升值吗?]
第4步:做一个copyField并将"缩写"放入默认的"文本"搜索字段中。[这可能会让我失去特定领域的权重,是吗?--因此低于5或6。]
步骤5:OR-添加一个请求处理程序,强制在每次传入搜索时直接对缩写字段进行搜索。不完全确定这一点,但我从这个stackoverflow问题中得到了这个想法:如果在特殊字段中找到查询,则Solr-Boosting结果
步骤6:OR-在提交给SOLR之前,在我的UI中输入的每个查询上添加用于搜索"缩写"的查询文本。
[在这种情况下,我想用这个查询搜索默认字段和"缩写"字段。我认为这是可能的,我只是还没有尝试写查询。非常感谢您的评论。]