我正在使用 lucene 搜索,我有类似的名称列表
1) CITY OF CAIRO
2) CALICUT OFFICIAL BRANCH
3) CAIRO BRANCH OFFICE
如果用户输入“CO”,则必须输入以“C”开头的名称,第二个单词应以“O”开头,它应返回第一个名称(CITY OF CAIRO)和第二个名称(CALICUT OFFICIAL BRANCH)。第三个名称(CAIRO BRANCH OFFICE)名称不应返回,因为它没有第二个单词以“O”开头。我正在使用 RegexpQuery 查询。它列出了上述所有 3 个错误的名称。
RegexpQuery dynamicRegEx3 = new RegexpQuery(new Term("name", "C.* O.*"));
实现这个目标的方法是什么?
打印的查询是::::name:/C.* O.*/
最佳答案
你的正则表达式是贪婪的,请改用这个:
RegexpQuery dynamicRegEx3 = new RegexpQuery(new Term("name", "C[^ ]* O.*"));
[^ ]
代表任何非空格的字符。
关于java - Lucene 中的正则表达式查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24305215/