我正在制作一个.NET桌面应用程序(WinForms + Local PostgreSQL Server)来管理小商店的销售。
我希望将Lucene搜索工具集成到我软件的“产品搜索”模块中。是否有将这些信息检索库集成到现有应用程序中的良好模式?
注意:应用程序仍在开发中,我总是可以修改体系结构以集成Lucene。
注意:我知道如何使用Lucene并创建了一个简单的演示应用程序来测试它的功能。 我只是在寻找将这种搜索功能集成到桌面应用程序中的模式。
注意:集成的主要要求是让用户能够快速搜索产品/品牌/等,并在用户界面中提供谷歌自动完成'系统。
答案 0 :(得分:3)
我建议你把这本书当作“Lucene in Action”。它基于适用于Java的Lucene 3.0.3版本,但该版本恰好是.NET(3.0.3)的最新版本。
这本书将为您提供开展.NET所需的一切。实现“类似谷歌”的搜索实际上并不是那么简单......要做的事情:模糊搜索,词库匹配,拼写/你的意思,复杂的评分等等。我已经使用Lucene超过3年了,那本书帮助了我学到很多东西。
答案 1 :(得分:2)
就个人而言,我已经创建了一个通用存储库,它在某些时候为您提供了一定程度的抽象,还有一个名为linq to lucene的项目与存储库模式完全匹配,我已经采用了部分代码和我根据自己的需要制作了自己的实现,我建议你看看,还有一个名为lucene contrib的nuget包,它为lucene.net增加了一些功能。封装
将linq用于lucene实现的好处是,任何平均开发人员都可以在不了解lucene的情况下进行文本搜索。
谈论架构总是建议考虑像DRY,SOLID,TDD这样的OOP原则。 在我的情况下,我得到了一个单独的项目,如companyName.Software.Lucene,它抽象了lucene背后的所有机制,当你使用该实现时,感觉就像你在某个时候使用ORM进行搜索。如果您正在使用nHibernate,则可以选择使用文本索引设置