还以为网上的solr最基础的东西应该很多,结果发现je这边都是一些部署的资料。到没用人给最基本的查询语法。在做查询时十分吃力,自己整理了几个例子来分享下,希望别人不要再走弯路。
首先说下,查询都是基于solrj。如果不清楚solrj。可以当做是对solr查询语句的一个api封装。
solr的查询其实都是向select这个servlet穿字符型的参数,例如:
- http://192.168.1.107:8983/solr/collection1/select?q=*%3A*&wt=xml&indent=true
查询的字段格式一般是: 字段名: 字段值
说明号会被urlcoding,变成“%3A。”
我没有看过solrj的源码。但是应该是将对select这个servlet的请求通过httpclient的方式的一种实现。
进入正题:
首先需要实例化 SolrQuery 对象,用来做要查询的参数集合。
- SolrQuery q = new SolrQuery();
- q.setQuery("TITLE:中国人");
1、最基本的字段查询:
- TITLE:中国人
即查询 字段是TITLE 值包含“中国人”的所有结果集。
solr在查询时,会对传入的值分词, 中国人有可能会被分成“中国”,“国人”,“中国人”。
包含着三个短语的语句都会被搜到。强制要求solr不分词,可以给短语加上双引号
- TITLE:"中国人"
这样就只返回值包含“中国人”这个词语的。中国和 国人就不会返回。
2、多字段或关系 OR
- TITLE:("中国人" AND "美国人" AND "英国人")
- TITLE:"中国人" OR CREATED_AT:[" + date1 + " TO " + date2 + "]
3.多字段不包含的关系 NOT
这个语法就是我吃苦的地方,之前已经当多值or那样去查,结果不是,要写成
- TITLE:(* NOT "上网费用高" NOT "宽带收费不合理" )
4.查询一个范围 BETWEEN
- NUM:[-90 TO 360 ] OR CREATED_AT:[" + date1 + " TO " + date2 + "]
适用于数字和日期类型 .
日期转换上, date 要用
- String date1 = FastDateFormat.getInstance(
- "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").format(
- c.getStartTime().getTime())
来转换,而不是惯用的 yyyy-MM-dd HH:mm:ss
5.模糊查询
StringBuffer sb = new StringBuffer(); sb.append(" qymc:").append(searchKey); // 使用IK分词器查询 sb.append(" OR bh:").append("*"+searchKey+"*"); // 模糊查询 query = new SolrQuery(sb.toString());
在搜索大字段的时候可以使用,比如:标题、文章内容,使用时需要配置schema.xml文件<field type="分词器名称"/>
相关推荐
### Solr查询语法详解 #### 一、Core Query Param 查询参数 在Solr查询中,有许多重要的查询参数,这些参数可以帮助我们更精确地控制搜索行为。 1. **q**: 必填参数,代表查询字符串。它是任何Solr查询的基础,...
Solr是一种基于Apache Lucene的开源搜索引擎,提供了丰富的查询语法来满足各种搜索需求。在了解Solr查询语法前,我们首先需要了解几个核心概念。 首先,Solr的查询解析是通过queryParser来配置的,通常使用默认配置...
js-solr-highlighter 一个JavaScript库,用于基于lucene / solr查询语法中的查询突出显示HTML文本在浏览器或Node.js环境中运行基于和构建一般的突出显示过程为: 使用Lucene语法从查询中得出要突出显示的文本突出...
- **查询API**:Solr支持多种查询语法,如Lucene查询语法、Solr查询语法等。 2. **Windows上安装Solr 8.6.0** - **解压**:首先,需要将"solr-8.6.0.zip"解压到本地文件夹。 - **启动服务器**:进入解压后的目录...
1. **查询语法**:Solr支持丰富的查询语法,包括标准查询解析器(Standard Query Parser)和Lucene查询语法。例如,`q=field:query`用于指定字段查询,`q=*:*`表示匹配所有文档。 2. **查询解析**:查询字符串会被...
用户输入的查询会被转换为Solr查询语法,然后发送到Solr服务器。Solr会根据索引快速找到匹配的文档,并返回结果。Solr支持丰富的查询语法,如布尔运算符、短语搜索、范围查询等。 7. **分布式搜索**: 当数据量...
- **查询设计**:通过调整查询语句的结构,如使用“exists”查询或“join”查询,以适应Solr的查询机制,提升性能。 - **硬件和架构优化**:例如,增加Solr服务器的内存,使用SSD硬盘提升I/O速度,或者采用更高效的...
3. **搜索API**: Solr支持多种查询语言,如简单的Lucene查询语法和更复杂的Solr查询语法。它还提供了高级查询选项,如模糊匹配、短语查询、排序和分页。 4. **分布式搜索**: Solr可以部署在多个服务器上,形成一个...
SOLR 查询语法是 SOLR 搜索引擎用于构造查询的关键组成部分,它允许用户执行高级查询,包括字段限制、模糊匹配、短语查询、布尔逻辑等。例如: - **字段限制**:`field:value`,指定查询结果必须包含特定字段的指定...
3. **查询操作**:使用Solr提供的查询语言(如Lucene查询语法或Solr查询语法)构造查询条件,获取结果集。 4. **更新与删除**:根据需要更新单个或批量文档,或者删除指定的文档。 5. **处理结果**:获取查询结果后...
Nutch支持Solr查询语法,可以使用`field:`前缀来指定查询的字段。例如,如果我们要查询标题中包含"技术"的页面,查询字符串应为`title:技术`。这将确保返回的结果集中,每个结果的标题都包含"技术"这个词。 2. **双...
4. **Solr查询语法**:学习Solr查询语言(SOLRQParser),包括基本查询、高级查询、过滤器查询以及使用facets和高亮等特性。 5. **响应处理**:解析Solr返回的XML或JSON格式的查询结果,并展示给用户。 6. **错误...
4. 高级搜索功能:Solr提供丰富的查询语法,如布尔逻辑、短语匹配、模糊匹配、字段限制等,以及自定义查询解析器和过滤器。 5. 自定义排序和评分:用户可以自定义文档排序规则和评分算法,以满足特定的业务需求。 6....
- **Query**:Solr支持丰富的查询语法,包括Lucene查询语法、Solr查询API等。 8. **SolrCloud模式**:如果项目涉及到SolrCloud,那么还需要了解分布式搜索和存储的概念,如Sharding(分片)、Replication(复制)...
3. **查询和操作**:SolrNet支持各种Solr查询语法,包括标准查询、高亮、 faceting(分面)和更多高级特性。同时,它还支持添加、更新和删除文档。 4. **异步操作**:考虑到性能和并发性,SolrNet提供了异步API,使...
- **新功能**:可能引入了新的搜索特性,比如新的查询语法、更强大的分析器或者对最新技术标准的支持。 - **稳定性改进**:修复了已知的bug,增强了系统的稳定性和可靠性。 - **安全增强**:可能会有安全更新,以...
默认情况下,Solr使用标准查询分析器(Standard Query Parser),但有时我们可能需要针对特定字段定制查询行为,例如,处理特殊查询语法或执行精确匹配。这就是`match-query-parser`发挥作用的地方。 `match-query-...
4.10.3版本支持多种类型的字段,如文本、数字、日期等,并提供了丰富的查询语法,包括标准查询解析器、短语查询、近似查询等。 3. **XML/JSON数据输入**:Solr-4.10.3支持通过HTTP接口接收XML或JSON格式的数据,...