ntz*_*lis 12 c# lucene search lucene.net
我们使用Lucene.NET在客户网站上实现全文搜索.搜索本身已经有效,但我们现在想要实现修改.
目前所有术语都附加了一个*导致Lucene执行我将其归类为StartsWith搜索的内容.
在未来,我们希望有一个搜索,执行类似于Contains而不是StartsWith.
我们用
样品:
(Title:Orch*) 火柴: Orchestra
但:
(Title:rch*) 不匹配: Orchestra
我们希望第一个和第二个都匹配Orchestra.
基本上我想要与这个问题中提到的完全相反,我不确定为什么这个人Lucene执行了一个Contains而不是StartsWith默认:
为什么这个Lucene查询是"包含"而不是"startsWith"?
我们怎样才能实现这一目标?
我觉得它与分析仪有关,但我不确定.
sis*_*sve 21
首先,我假设您正在使用StandardAnalyzer或类似的东西.您链接的问题无法理解您搜索条款,他的案例a*将与"Fleet Africa"匹配,因为它被标记为"fleet"和"africa".
你需要打电话QueryParser.SetAllowLeadingWildcard(true)才能写出类似的查询field:*value*.你真的在改变传递给QueryParser的字符串吗?
你可以解析查询像往常一样,然后实施QueryVisitor是重写所有TermQuery进入WildcardQuery.这样你仍然支持短语搜索.
我认为将查询重写为前缀或通配符查询没有好处.兽人,胸部和管弦乐队之间的共享很少,但两个词都会匹配.相反,使用支持词干分析,同义词的分析器来连接您的客户,并提供拼写校正功能来修复简单的搜索错误.
| 归档时间: |
|
| 查看次数: |
15227 次 |
| 最近记录: |