Compass compass = compassTemplate.getCompass();
CompassSession session = compass.openSession();
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassBooleanQueryBuilder boolQuery = queryBuilder.bool();
List list = new ArrayList();
//查询一个属性
CompassHits hits1 = session.queryBuilder().queryString("name:" + queryString).toQuery().hits();
// 查询任意个属性
boolQuery.addShould(queryBuilder.queryString("name:" + queryString).toQuery());
boolQuery.addShould(queryBuilder.queryString("description:" + queryString).toQuery());
CompassHits hits2 = boolQuery.toQuery().hits();
// 查询所有的属性
CompassHits hits = queryBuilder.queryString(queryString).toQuery().hits();
//查询结果处理
System.out.println("queryString:" + queryString);
System.out.println("hits:" + hits.getLength());
for (int i = 0; i < hits.length(); i++) {
Product hit = (Product) hits.data(i);
list.add(hit);
}
参考:
CompassQueryBuilder queryBuilder=session.queryBuilder();
CompassBooleanQueryBuilder boolQuery=queryBuilder.bool();
//必须匹配
boolQuery.addMust(queryBuilder.queryString(type+":"+queryString).toQuery());
//必须不匹配
boolQuery.addMustNot(queryBuilder.queryString(type+":"+queryString).toQuery());
//或者匹配 也许没有
boolQuery.addShould(queryBuilder.queryString(type+":"+queryString).toQuery());
分享到:
相关推荐
在这个例子中,使用了`StandardAnalyzer`作为分析器,它会对关键字进行分词处理,以便匹配索引中的关键词。`Query`对象创建后,可以通过`IndexSearcher`执行搜索,返回的结果集是`Hits`对象,包含所有匹配的文档及其...
我们可以采用上述步骤,在项目启动时自动加载所有项目的索引信息,当用户输入关键字进行搜索时,通过Compass的查询接口返回匹配的结果。 具体实现上,可以先定义一个`ProjectService`接口及其实现类,利用Spring的...
- **模式匹配**:Rust 的 `match` 关键字可以用来进行模式匹配,包括字符串模式。例如,你可以使用 `match` 来检查字符串是否包含特定前缀或后缀。 ```rust let s = "hello"; match s.starts_with("hel") { ...
3. **查询器**:用户通过输入关键词,查询器在索引中查找匹配项,返回相关的搜索结果。 对于中文这样的语言,由于没有明显的词边界,需要使用**中文分词器**来解析语句。分词器的工作复杂性在于需要识别词语的正确...
- **Compass**:Compass 是一个强大的对象/搜索引擎映射 (OSEM) 框架,支持事务管理和类似于 Google 的简单关键字查询语言。它提供了 Lucene 抽象层,使得开发者能够更方便地进行对象与搜索引擎之间的映射。 #### ...
代码实现 1.入门1.1。安装1.2。你好,世界! 1.3。您好,货运! 2....设置一个新项目2.2。处理猜测2.3。生成一个秘密号码2.4。比较猜测与秘密号码2.5。允许使用循环进行多个猜测 3....使用关键字将路径带入范围7.5。将模块
3. **基于Compass+Lucene实现站内搜索**:适合于数据库驱动的应用场景,尤其是用于替代传统的SQL查询方式,例如使用`LIKE '%expression%'`来进行模糊匹配。 **1.2 Solr的特性** - **1.2.1 Solr使用Lucene并且进行...
5. **括号匹配**:括号匹配功能能帮助快速定位代码块的开始和结束,JavaScript中尤其常见的是花括号({})的匹配。 6. **代码折叠**:通过设置,可以方便地折叠或展开代码块,对于处理复杂的函数和模块很有帮助。 7....
例如,当用户输入搜索关键字时,JavaScript可以实时更新列表,只显示匹配的联系人。 接下来,我们可能会遇到的数据结构问题。为了有效地存储和操作联系人信息,开发者通常会使用数组或更高级的数据结构,如Map或Set...
3. **语义分析**:在语法正确的基础上,编译器会进一步检查程序的逻辑含义,比如类型匹配、变量声明等,确保程序的语义是正确的。这个阶段也会进行类型检查和符号表的管理。 4. **中间代码生成**:编译器可能会生成...
- `querySelector` 和 `querySelectorAll` 用于选择DOM元素,前者返回第一个匹配的元素,后者返回所有匹配的元素数组。 12. **迭代器和生成器** - `for...of` 循环用于遍历可迭代对象,如数组、Set、Map。 - ...
9. **版本控制**:C# 不断更新以适应新的编程需求,例如C# 8.0引入了默认接口实现、模式匹配等新特性,C# 9.0增加了nullable引用类型和目标类型推断等。 10. **跨平台支持**:随着.NET Core的推出,C# 可以在多种...