0

ペアのフィールドがたくさんあります(hoursDistance1、cityName1、hoursDistance2、cityName2、hoursDistance3、cityName3など)。

Luceneが、一方だけではなく正しい用語を持つ両方のフィールドに基づいてスコアを付けるには、どのクエリを検索する必要がありますか?つまり、この名前でここから3時間の都市を検索した場合、hoursDistanceNがここから3時間で、cityNameNが他のフィールドのペアをスコアリングせずに、これである結果を返すにはどうすればよいですか?

4

2 に答える 2

2

ペアごとにドキュメントを作成できます。だから代わりに

id | hours1 | name1 | hours2 | name2 | ...

あなたは持っているでしょう:

id | pair_num = 1 | hours | name
id | pair_num = 2 | hours | name
...

一度に1つのペアのみを検索する必要があるため、結果をマージする必要はありません。

于 2010-11-17T00:38:15.290 に答える
0

IIUCでは、データを非正規化することでこれを行うことができます。たとえば、次の場合に、フィールドのペアごとにLuceneドキュメントを作成します。

hoursDistance1=3,cityName1=London

次のフィールドを使用してドキュメントを作成します。

hoursDistance=3,cityName=London,pairIndex=1

次に、次のようなクエリを実行します。

hoursDistance=5 AND cityName=Leeds
于 2010-11-16T13:51:52.130 に答える