1

スポーツとユーザーをリストし、結合テーブル (UserSports) を持つデータベースがあります。

Sports Table:
ID   Name
1    Running
2    Swimming
3    Football
4    Baseball
5    Basketball

Users Table:
ID    Name
1     George
2     Jane
3     Alex

UsersSports
UserID   SportID
1         2
3         1
2         4
2         5

lucene.net を使用してスポーツを検索したいので、それらのインデックスを作成し、名前を分析します。これはうまくいきます。「ボール」を検索すると、サッカー、野球、バスケットボールが返ってきます。私がやりたいのは、特定のユーザーが UserSports に記録を持っていないスポーツのみを返すことです。したがって、Jane が「ball」を検索した場合、Football のみが返されます。not inaまたは aを使用して SQL でこれを行うことができ、left join ... where join is nullそれは正常に機能しますが、Lucene.net を検索するファジー ロジックを追加したいと考えています。

Lucene.Net でデータをインデックス化する最良の方法は何ですか?

4

1 に答える 1

1

これを行う方法はたくさんあります。

極端に大量のスポーツを行うことはないため、実際に行うように単純に Lucene インデックスをクエリし、そこから SQL クエリを作成できます。

SELECT *
FROM Sports
WHERE Sports.ID IN([list from lucene])
AND NOT EXISTS(
    SELECT 1
    FROM UsersSports
    WHERE UsersSports.UserId = [current user id]
    AND UserSports.SportID = Sports.ID
)
于 2013-03-28T14:44:59.600 に答える