我遇到了一组旧代码,其中一些动态变量设置为solr boost函数。
String query = "{!boost b=sum(" + searchQuery.getFieldsToBoost() + ")}";
如果
searchQuery.getFieldsToBoost()
包含以下任何标点符号+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
,则会中断所以我尝试使用https://lucene.apache.org/core/2_9_4/queryparsersyntax.html中给出的方法在boost sum()函数中转义这些特殊字符。
但是上述方法不起作用。
以下是错误:
Caused by: org.apache.lucene.queryParser.ParseException: Expected ',' at position 631 in 'sum(itemAttributes_A3,itemAttributes_ASD,itemAttributes_ASD1,itemAttributes_Bang,itemAttributes_Color,itemAttributes_ES,itemAttributes_El_Segundo_only,itemAttributes_Environment_Friendly,itemAttributes_MossPoint_only,itemAttributes_NAUFIL,itemAttributes_NorthDakota_only,itemAttributes_Off_Contract,itemAttributes_On_Contract,itemAttributes_PBINFO,itemAttributes_PPD,itemAttributes_Palmdale_only,itemAttributes_Preferred,itemAttributes_Punchout,itemAttributes_RanchoBernardo_only,itemAttributes_SEARCHABLE,itemAttributes_Services,itemAttributes_SpacePark_only,itemAttributes_custom_flag12,itemAttributes_FL_01,itemAttributes_hyphen\-field,itemAttributes_icon,itemAttributes_required_PPD,itemAttributes_semicolon;field,itemAttributes_space_field,attributes_Green_certified,attributes_Preferred_contract,attributes_Service_Disabled_Veteran,attributes_Veteran_Owned,attributes_Minority_Owned,attributes_Woman_Owned,attributes_Hubzone,attributes_Tier_II_Contract,attributes_Red_Attribute)'
因此,我想到了将
searchQuery.getFieldsToBoost()
中的所有特殊字符替换为下划线。但我不知道它将如何影响搜索结果/提高搜索结果。
基本上,如果有人可以帮助我转义特殊字符,或者在替换特殊字符以强调后,可以给我概述其影响,那将是非常不错的。
我无法理解提高solr的目的是什么。
最佳答案
增强功能的目的是在返回结果时增强特定的术语或文档或字段。它不会添加或更改结果集,例如它只能更改顺序。
因此,例如,如果您确定字段标题比描述更重要,则可以使用boosting进行设置。如果您决定,同样可以做的事情是,耐克一词比阿迪达斯一词更重要。
一些其他信息here
关于java - solr boost功能的目的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41463900/