Lucene中的Regexp查询

时间:2014-06-19 11:14:15

标签: java regex lucene

我正在使用lucene搜索,我有像

这样的名字列表
1) CITY OF CAIRO

2) CALICUT OFFICIAL BRANCH

3) CAIRO BRANCH OFFICE

如果用户输入“CO”,则必须输入以“C”开头的名称,第二个字应以“O”<< / strong>,它应该返回第一个名称( CITY OF CAIRO )和第二个名称( CALICUT OFFICIAL BRANCH )。第三个名称( CAIRO BRANCH OFFICE )名称不应返回,因为没有第二个单词以“O”开头。我正在使用RegexpQuery查询。它列出了以上3个错误名称。

RegexpQuery dynamicRegEx3 = new RegexpQuery(new Term("name", "C.* O.*"));

实现这一目标的方法是什么?

打印查询是:::: 名称:/C.* O。* /

1 个答案:

答案 0 :(得分:1)

你的正则表达式是贪婪的,请改用它:

RegexpQuery dynamicRegEx3 = new RegexpQuery(new Term("name", "C[^ ]* O.*"));

[^ ]代表任何不是空格的角色。