设置Lucene.Net索引

时间:2013-03-27 19:21:13

标签: c# lucene.net

我有一个列出体育和用户的数据库,并且有一个连接表(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中记录的运动。因此,如果简搜索“球”,它应该只返回足球。我可以使用not inleft join ... where join is null在SQL中执行此操作并且工作正常,但我想添加模糊逻辑搜索Lucene.net给出的内容。

在Lucene.Net中索引数据的最佳方法是什么?

1 个答案:

答案 0 :(得分: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
)