如何在Lucene.NET中进行部分单词搜索?

Jam*_*nes 9 c# lucene lucene.net

我有一个相对较小的索引,包含大约4,000个位置.除此之外,我正在使用它来填充搜索表单上的自动填充字段.

我的索引包含带有包含值的位置字段的文档

  • 俄亥俄州
  • 俄亥俄州代顿市
  • 俄亥俄州都柏林市
  • 俄亥俄州哥伦布市

我希望能够输入"ohi"并显示所有这些结果,现在没有任何显示,直到我输入完整的单词"ohio".

我正在使用Lucene.NET v2.3.2.1,我的代码的相关部分如下设置我的查询....

BooleanQuery keywords = new BooleanQuery();
QueryParser parser = new QueryParser("location", new StandardAnalyzer());
parser.SetAllowLeadingWildcard(true);
keywords.Add(parser.Parse("\"*" + location + "*\""), BooleanClause.Occur.SHOULD);
luceneQuery.Add(keywords, BooleanClause.Occur.MUST);
Run Code Online (Sandbox Code Playgroud)

简而言之,我想让它像LIKE子句一样工作

SELECT * from Location where Name LIKE '%ohi%'
Run Code Online (Sandbox Code Playgroud)

我可以和Lucene一起做吗?

小智 14

试试这个查询:

parser.Parse(query.Keywords.ToLower() + "*")
Run Code Online (Sandbox Code Playgroud)

  • 这个答案并没有反映最终代码应该是什么样子.我不知道该放哪个地方?什么类型的"查询"?最后的样本会很棒. (3认同)
  • @thinkzig:我知道这是一个老问题,但您能否编辑此答案以显示最终代码的外观(应将此行添加到何处)?谢谢! (2认同)