我使用一些数据创建了一个索引。现在我使用WildcardQuery来搜索这些数据。索引的文档具有我正在搜索的字段名Product Code
。
以下是我用于创建查询和搜索的代码:
Term productCodeTerm = new Term("Product Code", "*"+searchText+"*");
query = new WildcardQuery(productCodeTerm);
searcher.search(query, 100);
searchText变量包含用于搜索索引的搜索字符串。如果searchString
是'jf',我会得到以下结果:
JF32358
JF5215
JF2592
现在,当我尝试使用25, or f2 or f3
或除了仅使用j,f,jf
之外的任何其他内容进行搜索时,查询没有匹配。
我无法理解为什么会这样。有人可以帮助我理解搜索以这种方式表现的原因吗?
答案 0 :(得分:2)
您在索引时使用了什么分析器?根据您的示例,您应该确保您的分析器:
答案 1 :(得分:0)
在lucene FAQ页面中说:
QueryParser by不支持前导通配符(例如* ook) 默认。从Lucene 2.1开始,可以通过调用启用它们 QueryParser.setAllowLeadingWildcard(true)。请注意,这可以是一个 昂贵的操作:它需要扫描令牌列表 完全索引以查找与模式匹配的那些。
有关详细信息,请查看here.