这两天做项目碰到了个lucene一对多问题,原数据库有2张表。一个是酒店表(hotel),对应的字段有酒店id(hotelid),酒店名字(name),另一个是房型表(room), 对应的字段有酒店id(hotelid),房型价格(price)。
酒店和房型是一对多关系,比如一个酒店可以有标准间,豪华间等等。
现需求是输入最大价格和最小价格要查出符合条件的酒店数据,如果用sql很简单就解决了。但现在要求用lucene查询索引数据。
我的思路是 建立2套索引一个是酒店索引,一个是房型索引。假如用户输入的搜素条件是价格100-1000,名字带有北京的酒店,那么我的做法是:
1.先去查询房型索引,得到符合的酒店id,再把重复的酒店id过滤掉。
对应的lucene查询语句:+price:[100 TO 1000]
这样会得到一个酒店id的集合,然后再过滤重复的酒店id。
2.再去查酒店索引
对应的lucene查询语句:(假如符合价格的酒店id为1,3,5)
+name:北京 +(hotelid:1 OR hotelid:3 OR hotelid:5)
这样就可以得到想要的结果了,但是我觉得有些麻烦,哪位有更好的思路提供给我,小弟不胜感激。
分享到:
相关推荐
通过对“lucene_multiThreadIndex”压缩包的学习,你将掌握如何在Lucene中实现多线程索引,从而提高大型数据集的索引构建速度。通过实践,你可以更好地理解和应用这些技术,优化你的信息检索系统。
Lucene作为一款强大的搜索引擎库,在实际应用中确实会遇到一些问题,如平台异常、查询异常、显示问题以及写锁异常等。针对这些问题,我们可以通过一系列措施来进行预防和解决,如正确使用查询语法、优化显示逻辑、...
在IT领域,Lucene是一个非常重要的全文搜索引擎库,它由Apache软件基金会开发并维护。Lucene提供了高效的文本分析、索引和搜索功能,是许多大型网站和应用的基础。本话题聚焦于“Lucene多字段查询”和“文字高亮显示...
在多语言环境下,选择合适的字符编码至关重要,因为不同的编码方式对非英文字符的支持程度不同。例如,ASCII只能表示英文字符,而GBK和UTF-8可以支持更多的汉字和其他语言的字符。 Lucene默认使用UTF-8编码,这是...
- 要对多个目录进行索引,需要遍历每个目录及其子目录,为每个文件创建一个Document对象,并添加到IndexWriter。 - 使用Directory类的open方法指定每个目录路径,然后使用IndexWriter添加Document。 3. **相关库...
Lucene 是一个开源全文搜索引擎库,由 Apache 软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够轻易地在应用中集成全文检索功能。本实例将通过一个具体的应用场景,帮助大家了解 Lucene 的...
Lucene是一个全文搜索引擎库,由Apache软件基金会开发并维护,它提供了高效的文本检索、分析和存储功能。在Java编程语言中,Lucene被广泛应用于各种需要全文搜索功能的系统,如网站、文档管理、知识库等。其强大的...
9. **多字段搜索**:Lucene支持在多个字段上同时进行搜索,例如可以在标题、内容等多个字段中查找关键词。 10. **实时搜索**:Lucene允许动态添加、删除和更新文档,实现近实时的搜索体验。 11. **扩展性**:...
虽然 Lucene 的原始版本主要是为英文设计的,但其设计的灵活性使得通过扩展语言分析接口,可以轻松地添加对中文等其他语言的支持。这通常涉及使用词库和自动切分词算法来处理中文的分词问题。 **应用场景** 许多...
使用Lucene时,你可能需要考虑如何处理中文分词、如何优化搜索性能、如何实现多语言支持等问题。此外,对于大型数据集,可能需要了解如何分布式部署和管理索引。 总结来说,Lucene是一个强大的全文检索引擎,通过...
本文将对Lucene部分常用代码进行详细解释,包括多字段搜索、多条件搜索、过滤等。 多字段搜索 在Lucene中,我们可以使用MultifieldQueryParser来指定多个搜索字段。MultifieldQueryParser可以将多个字段合并到一个...
Lucene 提供了 Analyzer 类来对文本进行分词和标准化,去除停用词、转换为小写等。然后,Document 类用于表示要索引的一条信息,你可以添加 Field(字段)来存储不同类型的文本或非文本数据。 2. **字段类型**:...
6. **多语言支持**:增强了对多语言的支持,包括对非拉丁字符集的处理,如中文、日文等。 从2.2.0到5.5.0,Lucene不仅在功能上有所增强,也在易用性和扩展性方面取得了显著进步。对于初学者来说,从老版本开始学习...
随着版本迭代,Lucene引入了更多的特性,如多字段搜索、更高效的内存管理以及对更多语言的支持。 7. **《Lucene in Action》书籍内容** 这本书详细讲解了Lucene的各个方面,包括安装、基本用法、高级特性和实际...
通过学习和实践这个LuceneDemo,你可以对Lucene有一个初步的认识,了解如何创建、索引和搜索文档。随着深入学习,你会发现Lucene的强大之处在于其高度定制化的能力,可以满足各种复杂的搜索需求。在实际项目中,结合...
本压缩包包含的是Lucene 3.5.0版本的全部源码,对于想要深入理解Lucene工作原理、进行二次开发或者进行搜索引擎相关研究的开发者来说,是一份非常宝贵的学习资源。 Lucene 3.5.0是Lucene的一个重要版本,它在3.x...
《Annotated Lucene 中文版 Lucene源码剖析》是一本深入探讨Apache Lucene的书籍,专注于源码解析,帮助读者理解这个强大的全文搜索引擎库的工作原理。Lucene是一款开源的Java库,它提供了高效的文本搜索功能,被...
Java搜索引擎Lucene是一款开源的全文检索库,由Apache软件基金会开发并维护,它为Java开发者提供了强大的文本搜索功能。Lucene的核心目标是让开发者能够快速地在应用中集成高级的搜索功能,使得用户可以轻松地查找和...
7.7.2 版本是 Lucene 的一个重要稳定版本,它在前一版本的基础上进行了多项改进和优化,为开发者提供了更强大、更稳定的搜索解决方案。 1. **全文检索核心**: Lucene 的核心在于其强大的全文检索能力。它能够对...
Lucene会定期检查当前索引中是否有需要合并的段,这一过程涉及到对SegmentInfos的检查。一旦发现有多个相邻的、大小相当的段,就会启动归并过程。归并策略的核心是通过比较各段的第一个Term,利用小根堆数据结构进行...