lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erick Erickson <erickerick...@gmail.com>
Subject Re: How to do partial beginning matches
Date Thu, 06 May 2010 12:56:32 GMT
There's really no connection between NGrams and *. NGrams can be used
to handle hairy wildcard expressions, in particular searching for things
like
*blah* is one potential use of NGrams.

But your problem is simple to solve without bothering with NGrams, just use
the "begin*" syntax, no special indexing required...

A bunch of work has been done to make wildcard queries more friendly, but
do note that this is a more complex problem than you might initially think,
so
don't be surprised if you revisit your solution as your project matures...

HTH
Erick

On Thu, May 6, 2010 at 8:11 AM, Felix Pendergast
<felixpendergast@gmail.com>wrote:

> Hello,
>
> I'm trying to search for partial beginning matches on a big list of
> lastnames. So Wein* should find Weinberg, Weinkamm etc.
>
> I could do this by creating a special field, and adding
>  <filter class="solr.EdgeNGramFilterFactory" minGramSize="1"
> maxGramSize="50" preserveOriginal="1"/>
> to its type specification in schema.xml. When I add the line above only to
> the indexing analyzer and leave it empty for the query analyzer, I can then
> search by just search special_field:Wein and get the expected results.
>
> Now I see that solr also has a *-syntax. What's the connection between
> EdgeNGramFilterFactory and the *-syntax?
>
> Am I doing things correctly or is there a better, more regular way?
>
> Thanks,
> Felix
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message