いくつかの動的変数がsolr boost関数に設定されている一連のレガシーコードに出くわしました。solr boost関数の目的
String query = "{!boost b=sum(" + searchQuery.getFieldsToBoost() + ")}";
これはケースsearchQuery.getFieldsToBoost()
に壊れるだから、私はhttps://lucene.apache.org/core/2_9_4/queryparsersyntax.html
に与えられたアプローチが、上記を使用して、ブースト合計()関数内でこれらの特殊文字をエスケープしようとしたこれらの句読点+ - && || ! () { } [ ]^" ~ * ? : \
のいずれかが含まれていますアプローチは機能しませんでした。
以下のエラーです:
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のboostの目的は何であるか理解していません。
getFieldsToBoostが返すものを表示できますか? – Mysterion
形式itemAttributes_ {Dynamic_FieldName}でコンマ区切り文字列を返します。 この{Dynamic_FieldName}に上記の特別なcharが含まれている場合は、それが中断されます。 –
ブースティングを取得していない場合、なぜそれを使用していますか? – Mysterion