lucene 一次查询多个id
在文本搜索中,有时也需要一次搜索多个id,这里id类似数据库里面的主键。
这个id在索引里面的倒排列表长度往往等于1.
例如:根据id=[1,2,4,6,7]查询索引
最最一般的思路是构造一个booleanQuery,然后add 5个TermQuery,用should逻辑。
但是这个检索效率肯定不行。
可行的一个办法是:
TermDocs td = null;//
int[] docIds = new int[ids.length];//存放结果
int count = 0 ;
td = search.getIndexReader().termDocs();
for(id : ids){
td.seek(new Term("id", id));//NumericUtils
if(td.next())
docIds[count++] = td.doc();
}//伪代码
docIds收集了ids对应索引中的docId,下一步直接从search中获取document即可。
//
数据库做这事一般使用in,貌似效率也很一般,有什么好办法么?
lucene 一次查询多个id的更多相关文章
- SQL 查询某字段id为空(不为空)
1 sql 查询某字段id为空 select * from 表名 where id is null ; 2 sql 查询某字段id不为空 select * from 表名 wher ...
- lucene 转义含有查询关键词的字符的
http://www.oschina.net/question/1092_560 Escaping Special Characters Lucene支持转义查询中的特殊字符,以下是Lucene的特殊 ...
- angular6 路由拼接查询参数如 ?id=1 并获取url参数
angular6 路由拼接查询参数如 ?id=1 并获取url参数 路由拼接参数: <div class="category-border" [routerLink]=&qu ...
- lucene复合条件查询案例——查询name域 或 description域 包含lucene关键字的两种方式
方式一:使用语法表达式查询 //查询name域 或 description域包含lucene关键字 QueryParser queryParser = new QueryParser("na ...
- lucene 7.x 查询
@Test public void indexSearch() throws IOException, ParseException { //Termquery:精确string查询 // Query ...
- (六)lucene之其他查询方式(组合查询,制定数字范围、指定字符串开头)
本章使用的是lucene5.3.0 指定数字范围查询 package com.shyroke.test; import java.io.IOException; import java.nio.fil ...
- lucene的索引查询
package com.hope.lucene;import org.apache.lucene.document.Document;import org.apache.lucene.document ...
- 数据库查询返回Resource id #9后的处理方式
如果在调用PHP查询数据库,在echo后返回的是Resource id #9,可能你的输出方式是: $sql="SELECT * FROM dbname WHERE id='1'" ...
- 查询数据库最大id加1
SELECT ISNULL(MAX(id),0)+1 AS MaxId FROM TABLE ISNULL(MAX(id),0) 就是如果id为空 就返回0,然后再加1
随机推荐
- Atcoder 1973:こだわり者いろはちゃん / Iroha's Obsession
C - こだわり者いろはちゃん / Iroha's Obsession Time limit : 2sec / Memory limit : 256MB Score : 300 points Prob ...
- 系统间通信——RPC架构设计
架构设计:系统间通信(10)——RPC的基本概念 1.概述经过了详细的信息格式.网络IO模型的讲解,并且通过JAVA RMI的讲解进行了预热.从这篇文章开始我们将进入这个系列博文的另一个重点知识体系的 ...
- hdu2594 Simpsons’ Hidden Talents LCS--扩展KMP
Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had.Marge ...
- 【HAOI2011】problem b
数论好劲啊 原题: 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 1≤n≤50000,1≤a≤b ...
- Connect模块解析 转载
来自对<了不起的Node.js>一书的学习ConnectNode.js为常规的网络应用提供了基本的API.然而,实际情况下,绝大部分网络应用都需要完成一系列类似的操作,这些类似的操作你一定 ...
- centos7 部署elasticsearch
环境: 系统:centos7.3 版本:elasticsearch6.2.3 head版本:https://codeload.github.com/mobz/elasticsearch-head/zi ...
- 使用InternalsVisibleToAttribute给assembly添加“友元assembly”特性遭遇"强签名"
一.如何让Intenal成员暴露给另一个程序集 我们知道Modifier为Internal的类型成员仅限于当前程序集能够访问,但是在某些情况下,我们希望将它们暴露给另一个程序集.比较典型的应用场景包括 ...
- socket服务器编程的一般思路
socket bind 创建一个listern线程 为每一个连接的client创建一个线程
- 20165308 2017-2018-2 《Java程序设计》第2周学习总结
20165308 2017-2018-2 <Java程序设计>第2周学习总结 教材学习内容总结 标识符与关键字 基本数据类型 输入输出数据 循环语句 break continue语句 if ...
- JSBridge 知识点
比较好的介绍文章: Android中JSBridge的原理与实现