autocomplete - Solr - 複数の人気フィールドを使用して結果をインデックス化し、ブーストする方法は?

okwaves2024-01-25  8

これはサンプルドキュメントです -

{
    "id": "AIRPORT-LAS",
    "RANK": 80.0,
    "TYPE": "AIRPORT",
    "COUNTRY_NAME": "United States",
    "COUNTRY_CODE": "US",
    "ISO_COUNTRY_CODE": "US",
    "LATITUDE": "36.08047103880001",
    "LONGITUDE": "-115.14331054699983",
    "LATLON": [
        "36.08047103880001,-115.14331054699983"
    ],
    "CITY_CODE": "LAS",
    "CITY_NAME": "Las Vegas",
    "PROVINCE_CODE": "NV",
    "PROVINCE_NAME": "NEVADA",
    "AIRPORT_NAME": "McCarran Intl Airport",
    "AIRPORT_CODE": "LAS"
}

顧客が検索している場所 (地理的位置) に基づいて、上記の各ドキュメントの州と国の組み合わせを使用して複数の RANK を取得します。

例:

For AIRPORT-LAS, I'll have the following -
USA - CA - 100
USA - NJ - 80
USA - NY - 75
.... rest of combinations

私は次のことを理解しようとしています -

この新しいランクのセットを既存のドキュメントにインデックス付けする最善の方法は何でしょうか?別のコレクションとして?それともネストされたデータセットとして? 検索時に新しいランクのセットを使用して結果を向上させるにはどうすればよいですか? [基本的に、ユーザーが米国からカリフォルニアを検索している場合、検索結果を高めるために RANK=100 を使用する必要があります。検索時に州と国がわかります。]

ありがとうございます!

今、どこから元気をもらっていますか?インデックスを作成する必要があるかどうかはわかりません。クエリを作成するときに国と州がわかっているので、ブーストを調べて、bq または boost? の両方に一致するドキュメントのブーストを追加します。

– マッツリンド

2020 年 9 月 3 日 20:00

サンプルドキュメントを見ると、RANK フィールドがあります。これは、関連性の照合に使用されるフィールドです。

– ジャガモット

2020 年 9 月 4 日 2:31



------------------------

ドキュメントの数値をスコアに直接統合する場合は、クエリ時にブースト関数を使用します。ここで複数のドキュメント値を使用することもできますが、適切なブースト係数を選択するように注意してください。

bf=mul(RANK, 2)

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。