如何用正则表达式创建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短语查询呢?谢谢。

0

1个回答

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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Lucene对于短语匹配查询的用法
通常对于ID查询或者是比较确定字段内容的查询,我们就用: Term JobcnIDTerm = new Term(&quot;JobcnID&quot;, bean.getJobcnID());   TermQuery JobcnIDQuery = new TermQuery(JobcnIDTerm);   如果查询的内容是地址或是包括很多字数内容字段的查询,我们用: Analyzer analyzer = ...
如何用Lucene为目录创建索引
现在网上很多例子都是基于老版本的Lucene做得例子,我给改了一下,这个例子是基于lucene 2.4的,希望能有所帮助 packageutils; importjava.io.File; importjava.io.FileReader; importjava.io.IOException; importjava.io.Reader; importorg.apache....
lucene 索引创建查询
static Directory dir;     public static void main(String[] args) {         String path = "index";         try {             dir = FSDirectory.open(new File(path));             Analyzer analyzer
Lucene 搜索方法(短语搜索)
用户在搜索的时候,更多的情况是输入一个以上的关键字,这些关键字和可能组成一个短语。   代码: public static void main(String[] args) {  try {   IndexSearcher search = new IndexSearcher(&quot;d://demo&quot;);   PhraseQuery query = new PhraseQuery();   Te...
lucene 创建索引 查询实例
package com.jr.demo;import java.io.File; import java.io.IOException; import java.net.URI; import java.nio.file.Path; import java.nio.file.Paths;import org.apache.lucene.analysis.standard.StandardAnalyz
Lucene索引创建、查询与高亮
前面我们介绍少了Lucene的基本使用及中文分词,下面我以一个实例来看一下Lucene的使用方式。
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...
如何用正则表达式分割字符串?
有一段文字,如何用正则表达式将文字按标点符号分割?rn即str="胸廓对称,两胸膈上骨性肋骨未见明显错位性骨折征象。两肺纹理增多、增粗,未见浸润性病变;气管居中,纵隔无移位,心影外形、大小正常;两膈面光滑,肋膈角锐利。"rn如何用正则表达式分割后存储在vector strvec中,即rnstrvec[1]="胸廓对称",rnstrvec[2]="两胸膈上骨性肋骨未见明显错位性骨折征象",rnstrvec[3]="两肺纹理增多"…………以此类推。rn怎么实现啊?rn还有regex_split()的参数怎么设啊?rn求教高手!!!!!!!!rn我学的是VC++
如何用正则表达式去掉
例如文本如下 rnrn 正文 rnrnrn要求最后只保留正文,而去掉两边的javascript标签,以及其标签中间的那些内容,javascript可能有很多行
如何用正则表达式获取
两个问题: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谢谢了 大神门,急求……
如何用正则表达式表示“[”?
我试了,无法使用"\["rn运行环境为VC.net 2002rn
如何用正则表达式分割字符串
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
这段如何用正则表达式
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
如何用正则表达式获取数据
如何用正则表达式在网页中获取数据133.400rnrn rn 133.400rn
如何用正则表达式匹配
string s="daf@csdn.net"rn怎么来匹配啊 用正则表达式rnConsole.write(Regex.isMatch(s,@"[a-zA-Z]+@\w+\.net"))rn这样不行
这种如何用正则表达式
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的字符都替换掉?
如何用正则表达式解析HTML
试图用Pattern从HTML中提取形如科研经费提成合法不合理 多位大学校长呼吁改革 的字符串,rn需要支持中文的提取,请问该如何编写相应的正则表达式?
如何用正则表达式分割字符串。
有若干种模式组合而成的字符串,想利用正则表达式分隔。如何做?rn比如: 有“年/月日”组合而成的字符串“年/月/日\\年/月/日\\...\\..."rn想分割成由 “年/月/日”而成的数组。应该怎么做呢?rn或者rnrnrn不能使用split,因为分隔符不固定。必须用正则表达式。rn
如何用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请高人指点一下!
如何用语句创建?
本人迷惑。Form 窗体可以用 New 关键字声明,然后就可以用 Show 方法显示。可是其他控件该如何创建呢?如窗体上没有 CommandButton 要用语句创建该怎样写?
■ 如何用 通配符 查询!
■ 如何用 通配符 查询!rnrn比如一字段rnrn20.20rn12.50.20rn13rn20rn11.11.11.11rnrn我要查询 rnrn??rn??.??rn??.??.??rnrnrn如何写 sql
lucene使用PhraseQuery设置slop进行短语查询
所谓PhraseQuery,就是通过短语来检索。 例如现在有一个字符串,“the quick brown fox jumped over the lazy dog”,我们不知道其中的精确的短语,我们仍然可以通过短语“quick”、"fox"来查找文档。slop就是从一个词到另一个词的距离。 下面是一个模仿lucene in action 第二版的一个例子。 package com.cn;
如何用JDO查询
<br />查询你的数据 <br />在JDO API中和查询相关密切的有两个接口(它们的具体实现由JDO产品来完成): <br />java.jdo.Query <br />======================== <br />该接口的实例是由另一个接口PersistenceManager来创建的,在JDO中PersistenceManager是一个比较重要的接口,我们所有的事务处理都是通过该接口来定义的。 <br />PersistenceManager接口有一组newQuery方法来产生Que
使用python实现短语查询
python实现短语查询
lucene-PhraseQuery通过短语查询
通过查找域中的项都相隔一定的距离。两个项的位置最大相隔距离为slop。距离是指项要按顺序组成给定的短语,所需要移动位置的次数,不是指间距。public class PhraseQueryTest extends TestCase{    privateIndexSearcher searcher;    protectedvoid setUp() throws IOExceptio
lucene读取word excel pdf正则表达式查询
http://blog.csdn.net/wuyinggui10000/article/category/3173543 我的博客
如何用正则表达式不区分大小写的匹配“ ”?
谢谢!rn
如何用正则表达式截取字符串
有这么一段字符串:rn[aaa]bbbrn想分别截取字符串aaa(即中括号里面的字符)和bbb(即括号外面的字符),怎样写正则才能实现?rn$str1=aaarn$str2=bbbrnrnrn答案是这个rn$str = '[aaa]bbb';rnpreg_match('/^\[(.*)\](.*)$/', $str, $matches);rnrn$matches[1] == 'aaa';rn$matches[2] == 'bbb'; rnrn怎么改写成C#代码
如何用正则表达式作限制
如何用正则表达式限制输入的是汉字,我要求是正则表达式。
如何用正则表达式实现与运算
如想判断在A字符串中是否同时包函B及C及D...字符串,该如何处理.rn如:rn$A="请您对您的言行负责,遵守中华人民共和国有关法律、法规,尊重网上道德";rn$B="法律";rn$C="遵守";rn$D="法规";rn...rnrn如何用一条REGEXP语句写出??谢谢。。
如何用正则表达式去除超链接
想用preg_replace()将$article中所有class=“axxa”超链接换成普通文本,不知道怎么写正则表达式和函数的参数?rn例如$article=kdkd,要变成kdkdrnrnpreg_replace("[color=#FF0000]?[/color]","[color=#FF0000]?[/color]",$article)rnrn求助各位,正则表达式和第二个参数该怎么写呀?
如何用正则表达式比较字符串
比如有一个字符串格式是这样的:你的话费为12.88元。rn我收到另一个字符串为:你的话费为[color=#FF0000]1856[/color]元。rn怎么使用正则表达式比较这两个字符串,得出结果是正确的。rn最好有点代码哟
如何用正则表达式匹配汉字
想用正则表达式匹配汉字,就是匹配 “张”,“赵”,“王”,这些姓的表达式,应该怎么写啊?java里怎么写?
如何用正则表达式判断字符串长度
在textbox中输入字符串,字符可以为中文、英文或各种字符,使用控件验证,如何用正则表达式判断字符串长度,比如字符串长度小于等于10个?rn另外一个汉字和一个英文字符是否都占用相同的位置?也就是说,限制10个字符,可以输入10个英文字母,是否可以输入10个汉字?谢谢。
如何用正则表达式匹配试题?
试题样例如下:rn一、单选题:rn[color=#FF0000]1. 燃油中混有水,会是使柴油机(B )。 rnA.冒黑烟 B.冒白烟 C. 冒蓝烟 D. 雾化不良[/color]rnrn[color=#0000FF]2.喷油器回油量每分钟不得超过(C )滴.rnA.20 B.30 C. 50 D. 60[/color]rn[color=#FF0000]32.中修时DF4B机车柴油机摇臂的横动量为(C )毫米。rnA.0.15~0.586 B.0.15~0.8 C. 0.15~1.0 D. 0.15~1.2[/color]rn二、判断题:rn[color=#339966]1.喷油器雾化不良可以引起柴油机敲缸。( √ )[/color]rn[color=#FF0000]2.8B连杆轴承润滑间隙 为0.20~0.31mm。( × )[/color] rnrnrn1.试题可能有多行rn2.备选项可能有多行,可能更多或更少rn如何匹配出彩色部分?
如何用正则表达式分析公式
能否用正则表达式完成如下功能:rn一个字符串:(a-b)*12+c-d 与此字符串相对应的是一个数组:3,4,5,6rn第一个字符串中有4个字符,能否顺序的用后一个数组中的值去替换?rn我希望得到的结果是:(3-4)*12+5-6。rn知道正则表达式有查找替换功能但不熟悉,在此求教高手们。rn 还有顺便问一个sql server的问题:rn有一个a表 rnID NUM1 NUM2rn1 8.8 9.7rn2 10.5 77rnrn我的查询语句是:select (Num1*7+Num2-6)/4+num1-0.8+num2/2-(num1*num2)rn总之就是对NUM1 NUM2做了一大堆的算术操作 这两个字段的类型是float.我不知道sql server的计算能力到底怎样,值都能出来就是不知道对不对,我产生怀疑的原因是如果调用ROUND()函数。选择不同的精度时有些结果正确有些错误。当时我测试的是小数点6位和8位不正确其他的正确比如9位5位4位。rn如果有知道的请一起回答了吧。本人是小气鬼 2个问题发一个帖子。rnrnrn
如何用正则表达式解析标签?
原文章的标题起的不好,导致回复不多,故另开帖,分数也是多多滴 :)rnrn具体问题请看:http://community.csdn.net/Expert/TopicView1.asp?id=4917766rnrn无论在哪边回答都会有分的,呵呵rnrn谢谢!
如何用正则表达式提取字符串?
像如下字符串:rnrnrn可以直接用正则表达式取出340934这个子串吗???rnrn我现在都是先用正则表达式取到disp.jsp?sid=340934这个子串,再用字符串函数取340934
如何用正则表达式表示通配符*
我想要的效果是我预先设定好表达式的模板,可能有*也可能没有*,用户输入的字符串要能和我的匹配上,不区分大小写,比如:rn设定了“a*”,用户的a、ab都能匹配上rn设定了“a”,只有输入a才能匹配上rn设定了“*”,可以匹配一切输入rn设定了空串“”,只有也输入空串才能匹配rnrn看了半天教程,还是搞不出来,哭求
相关热词 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd c# 操作sql视图