2010-08-05 41 views
9

据我所知lucene(.net)不支持在searchterm开头的通配符 - >http://lucene.apache.org/java/2_0_0/queryparsersyntax.html “注意:你不能使用*或?符号作为搜索的第一个字符。“在searchterm开始的通配符-Lucene

例如 * myword

也许是因为它的安静难以搜索关键词前,搜索“一切”。

尽管如此,我们仍然期待在开始时使用通配符。 有谁知道这是可能的吗?

思考之一是搜索关键词,B搜索关键词,...... Z *搜索关键词 ......但似乎有点乱了我。提前

感谢

回答

15

你的问题被打上Lucene.NET所以我想你指的是.NET版本,而不是Java版本。

是的,你可以通过

var queryParser = new QueryParser(LuceneVersion, "content", new StandardAnalyzer(LuceneVersion)); 
queryParser.SetAllowLeadingWildcard(true); 

必须在搜索词的开头使用通配符,但你需要知道的性能结果。在此blog中查找更详细的源代码。

由于Lucene.NET是Java版本的一个端口,我怀疑你可以对Java版本使用相同的方法。虽然我没有证实这一点。

+1

你说得对。对于Lucene Java,同样的方法setAllowLeadingWildcard也可以在QueryParser-Object上使用。 – Tobias 2011-12-01 17:55:18

+1

截至今天,在这现在是一个属性:parser.AllowLeadingWildcard = true; – mbowles 2016-04-20 23:02:18