繁体   English   中英

设置Lucene.Net索引

[英]Setup Lucene.Net Index

我有一个列出运动项目和用户的数据库,并具有一个联接表(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中进行此操作left join ... where join is null ,可以正常工作,但是我想添加模糊逻辑来搜索Lucene.net给出的逻辑。

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

有很多方法可以做到这一点。

由于您永远不会进行过多的运动,因此可以像实际一样简单地查询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
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM