2017-01-04 9 views
0

いくつかの動的変数が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の目的は何であるか理解していません。

+0

getFieldsToBoostが返すものを表示できますか? – Mysterion

+0

形式itemAttributes_ {Dynamic_FieldName}でコンマ区切り文字列を返します。 この{Dynamic_FieldName}に上記の特別なcharが含まれている場合は、それが中断されます。 –

+0

ブースティングを取得していない場合、なぜそれを使用していますか? – Mysterion

答えて

1

昇圧機能の目的は、結果を返すときに、特定の用語や文書やフィールドを強調することです。結果セットを追加または変更しません。注文を変更することしかできませんでした。

したがって、たとえば、あなたがそのフィールドタイトルを決めた場合は、説明よりも重要である、あなたは高めでそれを設定することができます。あなたが決めた場合、同じことをすることができます。ナイキは、用語よりも重要ですアディダス

一部の追加情報here

関連する問題