2012-01-05 120 views
0

我正试图在我的应用程序中启用部分单词搜索。我想要发生的是,如果有人搜索说框架,并且索引栏有“playframework”作为其中一项,那么它应该被检测为一个命中。Playframework + Lucene:如何搜索部分单词?

这里是我的尝试:

play.modules.search.Query Q = Search.search( “指数:*” + JavaExtensions.noAccents(通过).toLowerCase()+ “*” 的位置。类);

但我得到一个错误: 无法分析“指数:* *框架: '?*' 或 ''不允许在WildcardQuery

任何想法,第一个字符?

+1

你不应该开始你的搜索与'*',如所述。您应该定义过滤器以匹配部分(可能使用NGramFilterFactory)。见:http://stackoverflow.com/questions/4824954/solr-partial-and-full-string-match了相关的问题,第二个答案(由毛里西奥·雅伯)应该工作。不要忘记重新索引! – 2012-01-05 22:59:14

回答

0

看来你需要做一个fuzzy search。在你的情况下,下面的代码应该做你需要的:

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