Playframework+;Lucene:如何搜索部分单词?

Playframework+;Lucene:如何搜索部分单词?,lucene,playframework,Lucene,Playframework,我正在尝试在我的应用程序中启用部分单词搜索。我希望发生的是,如果有人搜索sayframework,并且索引列中有“playframework”作为一个项目,那么它应该被检测为命中 以下是我尝试过的: play.modules.search.Query q=search.search(“索引:”+JavaExtensions.noAccents(by).toLowerCase()+“*”,Location.class) 但我有一个错误: 无法分析“索引:*框架*:”*“或“?”不允许作为通配符查询

我正在尝试在我的应用程序中启用部分单词搜索。我希望发生的是,如果有人搜索sayframework,并且索引列中有“playframework”作为一个项目,那么它应该被检测为命中

以下是我尝试过的:

play.modules.search.Query q=search.search(“索引:”+JavaExtensions.noAccents(by).toLowerCase()+“*”,Location.class)

但我有一个错误: 无法分析“索引:*框架*:”*“或“?”不允许作为通配符查询中的第一个字符


有什么想法吗?

看来你需要做一个调查。在您的情况下,以下代码应满足您的需要:

play.modules.search.Query q = 
  Search.search("yourFieldInLocationClass:" + queryString + "~", Location.class);

您永远不应该以“*”开始搜索,如前所述。您应该定义过滤器以匹配部分(可能使用NGramFilterFactory)。请参阅:有关相关问题,第二个答案(由毛里西奥·谢弗提供)应该有效。别忘了重新编制索引!