据我所知,lucene(.net)在searchterm开头不支持通配符 - > http://lucene.apache.org/java/2_0_0/queryparsersyntax.html “注意:您不能使用*或?符号作为搜索的第一个字符。”
例如,* myword
也许是因为在搜索项目之前搜索“所有内容”很安静。
尽管如此,我们期待在开始时使用通配符的方法。 有谁知道这是否可行?
一个想法是 searchterm,b searchterm,.... z * searchterm ......但这对我来说似乎有点随意。
提前致谢
答案 0 :(得分:16)
你的问题用Lucene.NET标记,所以我假设你的意思是.NET版本而不是Java版本。
是的,您可以通过
在搜索字词的开头添加通配符var queryParser = new QueryParser(LuceneVersion, "content", new StandardAnalyzer(LuceneVersion));
queryParser.SetAllowLeadingWildcard(true);
但您需要了解性能后果。在此blog中找到更详细的源代码。
由于Lucene.NET是Java版本的一个端口,我怀疑你可以对Java版本使用相同的方法。不过,我没有证实这一点。