如何用正则表达式创建Lucene的短语查询?

假设有3个文档分别包含如下3个字符串。

  • <book isbn="101" name="abc" />
  • <book isbn="102" name="def" />
  • <book isbn="201" name="ghi" />

我想创建一个使用正则表达式的Lucene短语查询,来查询并返回以上的第1和第2个文档。但是使用如下的语句并没有效果。

 Query luceneQuery = new RegexpQuery(new Term("content", "isbn=\"1\d+\""));

请问是否有办法能做到使用正则表达式的Lucene短语查询呢?谢谢。

1个回答

谢谢小D的回答。确实用PhraseQuery(org.apache.lucene.search.PhraseQuery)结合Term(org.apache.lucene.index.Term)能实现短语查询。但是如何在其中使用正则表达式呢?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Lucene对于短语匹配查询的用法
通常对于ID查询或者是比较确定字段内容的查询,我们就用: Term JobcnIDTerm = new Term(&quot;JobcnID&quot;, bean.getJobcnID());   TermQuery JobcnIDQuery = new TermQuery(JobcnIDTerm);   如果查询的内容是地址或是包括很多字数内容字段的查询,我们用: Analyzer analyzer = ...
Lucene 搜索方法(短语搜索)
用户在搜索的时候,更多的情况是输入一个以上的关键字,这些关键字和可能组成一个短语。   代码: public static void main(String[] args) {  try {   IndexSearcher search = new IndexSearcher(&quot;d://demo&quot;);   PhraseQuery query = new PhraseQuery();   Te...
lucene内容创建查询Demo
[color=red]lucene内容创建,查询[/color] [code=&quot;java&quot;]package com.wj.lucene; import java.io.File; import java.util.*; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lu...
如何用正则表达式获取
两个问题:rnrn1 如何用正则表达式 获得rn[img=https://img-bbs.csdn.net/upload/201310/01/1380604335_598439.jpg][/img]rnrn1-10的 每个 数字对应的链接地址?rnrnrn2 如何用正则表达式 获得rn[img=https://img-bbs.csdn.net/upload/201310/01/1380604375_481805.jpg][/img]rnrn搜索结果的 标题和 网址rnrnrn最好能分享一下 源码。rn谢谢了 大神门,急求……
如何用正则表达式去掉
例如文本如下 rnrn 正文 rnrnrn要求最后只保留正文,而去掉两边的javascript标签,以及其标签中间的那些内容,javascript可能有很多行
如何用正则表达式表示“[”?
我试了,无法使用"\["rn运行环境为VC.net 2002
这段如何用正则表达式
var myReg = /^[0-9\[0\-9\]]+$/; rn if(!myReg.test(patterns.value)) rn rnalert("请输入合法的资费前辍!");rn patterns.focus();rn return false; rn rnrn本人想要任意数字,如果有出现'[',就一定要[X-Z],X和Z代表任意的(0-9)数字,如果用上面,则可以是12[0;也可以是12[0- ;还可以是12[0-]rnrn而我要的是1234;12[0-9];17[1-9][1-5]; [0-9][1-9][2-9]; 5[0-9]147 等这样的结果rnrn其实想要的结果很简单,如果有存在‘[’,就一定要有[X-Z],而且这种模式可以在数字的前后,也可以不包含数字,rnrn 昨天有个网友给出了rn var myReg=/^\d+(\[\d+\-?\d+?\])*$/;rn 这种形式只能是数字开头,不能以[X-Z]开头,而且在[X-Z]之后不能加数字,要加只能加[X-Z]这样的形式rnrn
如何用正则表达式分割字符串
String a="PartA PartB \"2006-11-13 8:00:00\" \"2006-11-13 9:30:00\" PartC"rn请问如果写正则表达式进行分割出下面的数组出来:rnPartArnPartBrn"2006-11-13 8:00:00"rn"2006-11-13 9:30:00"rnPartCrn也就是说凡是引号里面的空格就不进行分割了。rnrn知道的朋友帮下忙,先谢谢了!rnrn
如何用正则表达式分割字符串?
有一段文字,如何用正则表达式将文字按标点符号分割?rn即str="胸廓对称,两胸膈上骨性肋骨未见明显错位性骨折征象。两肺纹理增多、增粗,未见浸润性病变;气管居中,纵隔无移位,心影外形、大小正常;两膈面光滑,肋膈角锐利。"rn如何用正则表达式分割后存储在vector strvec中,即rnstrvec[1]="胸廓对称",rnstrvec[2]="两胸膈上骨性肋骨未见明显错位性骨折征象",rnstrvec[3]="两肺纹理增多"…………以此类推。rn怎么实现啊?rn还有regex_split()的参数怎么设啊?rn求教高手!!!!!!!!rn我学的是VC++
这种如何用正则表达式
rn[code=HTML]rnif()rnrn 11111rn if()rn rn 2222rn if()rn rn 3333rn rn rnrnrnif()rnrn 44444rn if()rn rn 55555rn if()rn rn 66666rn rn rnrn[/code]rn考虑的[color=#FF0000]n个嵌套[/color],获取每一个里的字符,那位前辈能取出来!!!!
如何用正则表达式替换?
现有如下文本:rndd 123 asdfrnabcrnddrn889rnrn如何将它替换为只剩abc?rn即:如何将不为abc的字符都替换掉?
如何用正则表达式匹配
string s="daf@csdn.net"rn怎么来匹配啊 用正则表达式rnConsole.write(Regex.isMatch(s,@"[a-zA-Z]+@\w+\.net"))rn这样不行
如何用正则表达式获取数据
如何用正则表达式在网页中获取数据133.400rnrn rn 133.400rn
如何用正则表达式分割字符串。
有若干种模式组合而成的字符串,想利用正则表达式分隔。如何做?rn比如: 有“年/月日”组合而成的字符串“年/月/日\\年/月/日\\...\\..."rn想分割成由 “年/月/日”而成的数组。应该怎么做呢?rn或者rnrnrn不能使用split,因为分隔符不固定。必须用正则表达式。rn
如何用正则表达式解析HTML
试图用Pattern从HTML中提取形如科研经费提成合法不合理 多位大学校长呼吁改革 的字符串,rn需要支持中文的提取,请问该如何编写相应的正则表达式?
使用python实现短语查询
python实现短语查询
lucene读取word excel pdf正则表达式查询
http://blog.csdn.net/wuyinggui10000/article/category/3173543 我的博客
Lucene 搜索方法(多短语搜索)
短语搜索解决了短语搜索的问题,在很多情况下,用户输入某个关键字时,该关键字可以喝多种单字组成短语,例如,用户输入一个“声”字。它可以和“声音”,“声明”等字组成短语。LUCENE提供了MultiPhraseQuery来进行多短语搜索。 代码: public static void main(String[] args) {  try {   IndexSearcher search = new...
如何用语句创建?
本人迷惑。Form 窗体可以用 New 关键字声明,然后就可以用 Show 方法显示。可是其他控件该如何创建呢?如窗体上没有 CommandButton 要用语句创建该怎样写?
【Lucene】使用反射技术优化Lucene索引库的查询与创建
前面我们也使用用到了Lucene索引库的创建和查询,发现其代码太繁琐,有太多重复代码 例如: 1.获取Directory、Analyzer、MaxFieldLength、Version对象 2.将javabean对象封转成document对象 3.将document对象封转成javabean对象 接下来我们就创建一个LuceneUtil对索引库的创建和查询进行优化 packag
如何用like查询?
标题简单一些,描述起来有些麻烦rnrn我用mysql语句调用信息,当前页面包含的是大范围的字段,要调用小范围的信息rnrn比如当前信息某个字段是复选框:中国、美国、德国、俄罗斯,四个都勾选了rnrn还有几条信息是只含有中国或美国或德国或俄罗斯中的一个rnrn我在只含有一个国家的信息的页面能调用处含有四个国家的信息,但是在含有四个国家的信息页面中调用不出只含有一个国家的信息rnrn我是这样写的rnrn"select * from 数据表 where newstime > UNIX_TIMESTAMP()-86400*7 and id!=$navinfor[id] and guojia like '%$navinfor[guojia]%' order by onclick desc limit 5rnrn$navinfo[guojia]就是得出当前信息guojia字段的值,%%不是只要包含就可以调用么?rnrn请高人指点一下!
■ 如何用 通配符 查询!
■ 如何用 通配符 查询!rnrn比如一字段rnrn20.20rn12.50.20rn13rn20rn11.11.11.11rnrn我要查询 rnrn??rn??.??rn??.??.??rnrnrn如何写 sql
lucene的查询
基于lucene的站内搜索系统的设计和实现
Lucene 查询
select * from abc where type=1 or type=2rnrn请问一下这样的SQL语句在Lucene里用什么来做呀。rnrnstring[] sterm=new string[2]"ab","cd";rnstring TypeValue="aa bb cc";rnstinrg[] queryfield=new string[2]"Title","Type";rnint s=0;rnforeach (string value in sterm)rn rn if (value == null)rn break;rn elsern rn if (s == 1)rn rn string[] TypeValue = value.Split(" ".ToCharArray());rn foreach (string typevalue in TypeValue)rn rn Query query1 = QueryParser.Parse(typevalue, queryfield[s], vAnalyzer());rn bQuery.Add(query1, true, false);rn rn rn elsern rn Query query2 = QueryParser.Parse(value, queryfield[s], vAnalyzer());rn bQuery.Add(query2, true, false);rn rn s++;rn rn rnrn我这样写,只能查1个出来,不能实现上面的SQL语句
Lucene学习-创建索引、关键词查询
Lucene是一个全文检索的开源软件,对需要查询的关键词进行检索 1. 需要的jar包 lucene-analyzers-3.0.2.jar lucene-core-3.0.2.jar lucene-highlighter-3.0.2.jar lucene-memory-3.0.2.jar 2. 编码步骤2.1 准备Article文章类public class Article { priva
Lucene创建、查询、删除、更新 索引
使用lucene3.5 package com.yj.LunceneTest; import java.io.File; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.H
lucene初探(二):创建索引,查询索引
上一次  lucene初探(一):IKAnalyzer2012中文分词扩展初探 http://beyondqinghua.iteye.com/admin/blogs/1835986 已经尝试使用IK来分词,这次我们将学习如何将IK整合到lucene创建索引,并检索索引,例子分别使用lucene的英文分词工具、IK中文分词工具,代码依赖的包跟《IKAnalyzer2012中文分词扩展初探》一样。...
Lucene简单实现创建索引以及查询
package com.rdz.test; import java.io.File; import java.io.FileReader; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnaly
【Lucene】lucene查询Query对象
PrefixQuery 前缀查询。 如 test* 会匹配出 test/tests/tester。 例如:目录(category)通常都体现一个层次结构,如/tec/it/java 或 /tec/it/db 或 /tec/it/java/jvm 等等目录,如果想要搜索某个目录(如/tec/it或者/tec/it/db),可以构造prefix query。   WildcardQuery ...
如何用lucene对数据库建立全文检索
想自己做一个搜索页面,呈现效果像百度那种,对搜索技术很不了解,最近看了一些文章,考虑用lucene来做,不知是否还有更好的办法?
如何用正则表达式查找信息
数据库研究室rn rn 李波 libo@gmail.comrn 张鹏 zhangpeng@hotmail.comrn ...rn rn 人工智能研究室rn rn 冯浩 fenghao@126.comrn 齐杰 qijie@126.comrn ...rn rn...rn...rnrn一个网页的内容如上,如何用正则表达式检索出:姓名、电子邮件、所在实验室?
如何用正则表达式提取div
有一个字符串rnstr=" ff ff ff ff ff "rn请问如何用正则表达式把每个div的内容提取出来 内容包含div 例如 “ ff”rn谢谢
如何用正则表达式判断时间?
时间格式为 hh:mmrn0<=hh<=23rn0<=mm<=59rn
如何用正则表达式取出内容
rn 八度365导航rn有上内容,经处理后,我想得到如下内容rn每个href的内容和对应的font值rn如上面的信息处理后为rn1:http://www.baodu.zw78.com/rn2:八度365导航rn拜托了,帮帮我吧rn
如何用正则表达式,提取内容
[code=HTML]rnvar financeData = new Array(); rnvar wholidayData = new Array(); rnvar calendarConData = new Array(); rnfinanceData[0]="欧元#国际货币基金组织在第六笔救助资金拨款前,就希腊表现评估作出结论#2011-09-05#2011-09-05 12:15"rnfinanceData[1]="欧元#葡萄牙央行将公布该国银行从欧洲央行借贷资金的统计数据#2011-09-05#2011-09-05 12:15"rnwholidayData[0]="加元#劳动节 市场休市#2011-9-5 0:00:00#2011-9-5 12:15:35"rnwholidayData[1]="美元#劳动节 市场休市#2011-9-5 0:00:00#2011-9-5 12:15:35"rncalendarConData[0]="07:30:00#澳大利亚8月AiG服务业表现指数#M#48.8##52.1#2011-09-05 12:15#2011-09-05 07:30"rncalendarConData[1]="08:30:00#澳大利亚8月TD通胀年率#M#3.2%##2.9%#2011-09-05 12:15#2011-09-05 08:30"rncalendarConData[2]="08:30:00#澳大利亚8月TD通胀月率#L#0.3%##-0.1%#2011-09-05 12:15#2011-09-05 08:30"rncalendarConData[3]="09:30:00#澳大利亚第二季度企业运营利润季率#L#-2.0%##6.7%#2011-09-05 12:15#2011-09-05 09:30"rncalendarConData[4]="09:30:00#澳大利亚第二季度商业库存季率#L#0.4%##2.5%#2011-09-05 12:15#2011-09-05 09:30"rncalendarConData[5]="10:30:00#中国8月服务业采购经理人指数#L#53.5##50.6#2011-09-05 12:15#2011-09-05 10:30"rncalendarConData[6]="15:43:00#意大利8月服务业采购经理人指数#L#48.6###2011-09-05 12:15#2011-09-05 15:43"rncalendarConData[7]="15:48:00#法国8月服务业采购经理人指数终值#L#56.1###2011-09-05 12:15#2011-09-05 15:48"rncalendarConData[8]="15:53:00#德国8月服务业采购经理人指数终值#M#50.4###2011-09-05 12:15#2011-09-05 15:53"rncalendarConData[9]="15:58:00#欧元区8月服务业采购经理人指数终值#M#51.5###2011-09-05 12:15#2011-09-05 15:58"rncalendarConData[10]="15:58:00#欧元区8月综合采购经理人指数终值#M#51.1###2011-09-05 12:15#2011-09-05 15:58"rncalendarConData[11]="16:28:00#英国8月服务业采购经理人指数#M#55.4###2011-09-05 12:15#2011-09-05 16:28"rncalendarConData[12]="16:30:00#欧元区9月Sentix投资者信心指数#M#-13.5###2011-09-05 12:15#2011-09-05 16:30"rncalendarConData[13]="17:00:00#欧元区7月零售销售月率#M#0.9%###2011-09-05 12:15#2011-09-05 17:00"rncalendarConData[14]="17:00:00#欧元区7月零售销售年率#M#-0.4%###2011-09-05 12:15#2011-09-05 17:00"rnLoader.ShowData(financeData, wholidayData, calendarConData)rn[/code]rnrn如题,我想从上面的内容中分别提取出数组:financeData、wholidayData、calendarConData内容(双引号中的内容)rn注意数组长度不定,谢谢!rnrnrn
如何用正则表达式表示通配符*
我想要的效果是我预先设定好表达式的模板,可能有*也可能没有*,用户输入的字符串要能和我的匹配上,不区分大小写,比如:rn设定了“a*”,用户的a、ab都能匹配上rn设定了“a”,只有输入a才能匹配上rn设定了“*”,可以匹配一切输入rn设定了空串“”,只有也输入空串才能匹配rnrn看了半天教程,还是搞不出来,哭求
如何用正则表达式验证出生日期
var birthday=document.form1.txtDate.value; //这里获取输入的生日 rnvar nows=new Date(); rnvar year=nows.getFullYear();//获取现在的年份 rnrnvar reg=/^[1900-"+year+"][-][1-12][-][1-30]$/; rnrnrn要求格式为 yyyy-mm-ddrnyyyy范围为1900至当年。。。。rn表达式[-]的“-”好像是特殊字符啊。rn另外如何在reg表达式中加入自定义获取的year变量啊。
如何用正则表达式比较字符串
比如有一个字符串格式是这样的:你的话费为12.88元。rn我收到另一个字符串为:你的话费为[color=#FF0000]1856[/color]元。rn怎么使用正则表达式比较这两个字符串,得出结果是正确的。rn最好有点代码哟
如何用正则表达式不区分大小写的匹配“ ”?
谢谢!rn
如何用正则表达式判断字符串长度
在textbox中输入字符串,字符可以为中文、英文或各种字符,使用控件验证,如何用正则表达式判断字符串长度,比如字符串长度小于等于10个?rn另外一个汉字和一个英文字符是否都占用相同的位置?也就是说,限制10个字符,可以输入10个英文字母,是否可以输入10个汉字?谢谢。
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview