首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何利用Lucene查询类(CommonTermsQuery)和SolrJ

如何利用Lucene查询类(CommonTermsQuery)和SolrJ
EN

Stack Overflow用户
提问于 2016-08-10 11:10:15
回答 1查看 144关注 0票数 0

我想将Lucene的CommonTermsQuery类用于使用SolrJ执行的查询,那么如何使用Lucene的Query类呢?这些类与Solr的查询解析器有什么不同?

EN

回答 1

Stack Overflow用户

发布于 2016-08-11 04:45:28

Solr目前不包括使用CommonTermsQuery的查询解析器,但是可以通过在solrconfig.xml中的<lib ..指令中编译.jar 自己一个人,然后再加那个罐子来将查询解析器编译到Solr。

有一个带有关于如何为Solr制作QParserPlugin的现有示例的CommonTermsQuery作为gist,所以这可能是一个自定义插件的好起点。您将在查询开始时通过标准QueryParser选择自定义{!syntax}。因为SolrJ只是与Solr服务器对话的客户机,所以插件本身必须实现并加载到服务器上(或者如果您是以SolrCloud /群集模式运行,则为在所有服务器上)。

query采用自由形式的文本( Solr擅长的内容),并将其转换为一组查询类供Lucene执行(它代表查询,其方式是查询解析器认为用户希望表达自己的方式)。

Solr查询解析器与Lucene查询解析器的区别有几个,但是现在大多数人都使用edismaxdismax查询解析器(随着时间的推移,这些查询解析器可能演变成Lucene,我也不知道):

Solr查询解析器中的差异包括(这些差异来自于Solr Wiki上的旧页面--我不确定是否有更新的版本可用,但是由于Solr和Lucene的代码合并到一棵树中并进行了同步,我想与单独的项目相比,引入的新差异更少):

  • 范围查询a到z、前缀查询a*和通配符查询a*b是常量得分(所有匹配的文档都得到相同的分数)。得分因子tf、国防军、指数助推、coord不使用。匹配的术语的数量没有限制(就像Lucene的过去版本中的那样)。
    • Lucene2.1还切换到使用ConstantScoreRangeQuery进行范围查询。

  • A*可用于任一端点或两个端点,以指定开放范围查询。 字段:* TO 100查找小于或等于100的所有字段值。 字段: 100至*查找大于或等于100的所有字段值 字段:* TO *将所有文档与字段匹配
  • 允许纯否定查询(所有禁止的条款)。 -inStock:false查找inStock不是false的所有字段值。 -field:* TO *查找所有没有字段值的文档
  • FunctionQuery语法的钩子。当函数包含括号时,必须使用引号来封装它。 示例:_val_:myfield示例:_val_:“recip(Myfield),1,2,3)”
  • 嵌套查询支持任何类型的查询解析器(通过QParserPlugin)。 如果嵌套查询包含保留字符,则通常需要引号来封装它。 示例:查询:“{!dismax qf=myfield}”
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38881706

复制
相关文章
利用Boost影响Lucene查询结果的排序
以下代码在Lucene2.1下通过,主要是通过设置Document的Boost来影响文档的权重,以达到控制查询结果顺序的目的(前提是不利用Sort排序的情况下): private void btnSearch_Click(object sender, EventArgs e)         {             RAMDirectory ramDir = new RAMDirectory();             IndexWriter iw = new IndexWriter(ramD
菩提树下的杨过
2018/01/22
9020
利用Boost影响Lucene查询结果的排序
以下代码在Lucene2.1下通过,主要是通过设置Document的Boost来影响文档的权重,以达到控制查询结果顺序的目的(前提是不利用Sort排序的情况下): private void btnSearch_Click(object sender, EventArgs e)         {             RAMDirectory ramDir = new RAMDirectory();             IndexWriter iw = new IndexWriter(ramD
菩提树下的杨过
2018/01/22
1.3K0
Lucene 查询语法备忘
​​https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax​​
保持热爱奔赴山海
2022/07/28
4480
Lucene查询语法详解
Lucene查询 Lucene查询语法以可读的方式书写,然后使用JavaCC进行词法转换,转换成机器可识别的查询。 下面着重介绍下Lucene支持的查询: Terms词语查询 词语搜索,支持 单词 和 语句。 单词,例如:"test","hello" 语句,例如:"hello,world!" 多个词语可以通过操作符,连接成更复杂的搜索逻辑。 Field字段查询 Lucene支持针对某个字段进行搜索,语法如: title:hello 或者 title:"hello title" 搜索语句时需要加上双引号,否则
用户1154259
2018/01/17
5K0
Lucene索引库的维护和查询
是否分析:是否对域的内容进行分词处理。前提是我们要对域的内容进行查询。 是否索引:将Field分析后的词或整个Field值进行索引,只有索引方可搜索到。 比如:商品名称、商品简介分析后进行索引,订单号、身份证号不用分析但也要索引,这些将来都要作为查询条件。 是否存储:将Field值存储在文档中,存储在文档中的Field才可以从Document中获取 比如:商品名称、订单号,凡是将来要从Document中获取的Field都要存储。
暴躁的程序猿
2022/03/24
5260
Lucene:Grouping组查询
lucene的联想词是在org.apache.lucene.lucene-grouping包下边,提供了组查询功能的支持。
HLee
2020/12/31
2.1K0
Lucene:Grouping组查询
快速学习Lucene-Lucene索引库查询
对要搜索的信息创建Query查询对象,Lucene会根据Query查询对象生成最终的查询语法,类似关系数据库Sql语法一样Lucene也有自己的查询语法,
cwl_java
2019/12/25
5470
Lucene查询过程介绍
“ Lucene索引过程与相关的简介上一篇<Lucene简介与索引过程介绍>我们已经了解过,本篇我们来讲解Lucene查询过程。查询是用户把查询条件获取到目标文档的一个过程。通过用户输入的词Lucene负责匹配相关度最高的文档给予渲染输出。”
CainGao
2020/04/14
5850
Lucene范围查询原理(<Lucene6.0)
之前一直想看一下lucene range查询的底层原理, 先上网找了下相关资料, 发现非常混乱, 主要是因为lucene的范围查询曾经经历过两个不同的阶段:
叫我家宝
2022/02/25
1.7K0
Solr技术(附软件分享)
Solr 版本:solr-4.10.3.tgz.tgz SolrLinux下的软件安装包以及中文分词器见末尾百度云1
时间静止不是简史
2020/07/27
1.4K0
Solr技术(附软件分享)
Lucene强大的查询引擎
Lucene的主要模块有Analysis模块、Index模块、Store模块、QueryParser模块、Search模块和Similarity模块,各模块的功能分别汇总如下。 ① Analysis模块:主要负责词法分析及语言处理,也就是我们常说的分词,通过该模块可最终形成存储或者搜索的最小单元Term。
院长技术
2021/02/19
3550
Solr与MySQL查询性能对比
      "q": "CollectTime:[2014-12-06T00:00:00.000Z TO 2014-12-10T21:31:55.000Z]",
凯哥Java
2019/07/01
1.5K0
全文搜索引擎Solr原理和实战教程
Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。Solr是一个高性能,采用Java开发,
一个会写诗的程序员
2020/05/08
3.8K0
Solr_全文检索引擎系统
Solr介绍: Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。 Solr的作用: solr是一个现成的全文检索引擎系统, 放入tomcat下可以独立运行, 对外通过http协议提供全文检索服务(就是对索引和文档的增删改查服务), 在代码中可以通过solrJ(solr的客户端的jar包)来调用solr服务。 Lucene和solr的区别: lucene是一个全文检索引擎工具包, 就是
赵小忠
2018/01/24
1.1K0
lucene的高效数据查询
lucene是一个常用的并发处理时的全局搜索引擎,它和目前搜索引擎采取的处理大量查询数据的思路都是,事先把跟关键词相匹配数据存储起来,查找的时候直接把存储好的数据进行返回。
Tim在路上
2020/08/04
1K0
SolrCloud6.1.0之SQL查询测试
Solr发展飞快,现在最新的版本已经6.1.0了,下面来回顾下Solr6.x之后的一些新的特点: (1)并行SQL特性支持,编译成Streaming 表达式,可以在solrcloud集群中,并行执行 (2)SolrCloud的Collection被抽象成关系型数据库表,现在不仅仅可以支持强大的全文检索,还通过SQL支持像数据库一样的BI分析 (3)在SQL的where语句中,全面支持强大的Lucene/Solr语法 (4)一些聚合操作例如Group会自动优化成并行操作,通过使用St
我是攻城师
2018/05/14
1.2K0
了解Solr
采用Java开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
HUC思梦
2020/09/03
1.5K0
了解Solr
Lucene+Solr+ElasticSearch查询匹配优化
当我们在处理搜索业务时候,需求往往是灵活多变的,有时候我们需要精确匹配,有时候我们又需要全文检索,而有时候,我们又想匹配度高而且还能全文检索,这似乎是精确匹配和模糊匹配一个妥协的策略,没错这就是搜索引擎出现的目的,以往的数据库是没法解决这种问题的,数据库只能回答有,没有,存在,不存在,并不能在有和没有之间做一个完美的妥协,比如说能把最匹配最相关的结果放在topN,仅靠like模糊查询是解决不了这种问题的。 Apache Lucene这个强大的全文检索核心包,提供了搜索引擎的核心组件,通过相关性评分算法
我是攻城师
2018/05/14
1.3K0
利用Lucene的IndexWriter建立索引(详解)
/*  * 建立索引,然后把建立后的文档添加到索引中去  * 提示先使用Document和Field把Field加入到Document中去,  * 接着把Document建立成为一个索引  * */ package comThree;
星哥玩云
2022/07/04
5620
lucene和JDBC
==========================================
Hongten
2018/09/13
3950
lucene和JDBC

相似问题

如何使用Solrj获得SolrDocument的Lucene解释?

31

从Lucene过渡到Solr (以SolrJ为客户端)-查询?

12

SolrJ查询

40

SolrJ查询,连接查询

12

利用Lucene短语查询和PDFBOX检索PDF中的句子

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档