问题
If the search query contains a leading wildcard character (*
or ?
), the QueryParser
's Parse
function throws an error.
Dim q As String = "*abc"
Dim qp As New QueryParser("text", New StandardAnalyzer())
Dim query As Query = qp.Parse(q)
Is there any way to solve this problem in Lucene.NET v2.0.0.4?
回答1:
Set QueryParser.SetAllowLeadingWildcard Method to true. The API page states that "this can produce very slow queries on big indexes" though.
回答2:
Maybe you have to use a WildcardQuery, but
...In order to prevent extremely slow WildcardQueries, a Wildcard term should not start with one of the wildcards...
回答3:
You can avoid wildcard queries by utilizing NGramFilter
for your index analyzer. Than you have to use search_analyzer
without NGramFilter
. This way you can search similar to like "%text%"
without even needing wildcards. You just enter 'abc' and your index would be searched for all entries containing 'abc' very quickly.
来源:https://stackoverflow.com/questions/468279/leading-wildcard-character-throws-error-in-lucene-net