lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Burton-West, Tom" <tburt...@umich.edu>
Subject RE: Bigrams for CJK with ICUTokenizer ?
Date Fri, 04 Feb 2011 20:07:50 GMT
Thanks Robert,

Lucene 2740 looks really interesting.  In the meantime a JIRA issue for this sounds like a
good idea since I'm guessing other people would like to use the ICUTokenizer but would also
like bigrams for CJK.

I'm a bit confused over the relationship of the queryparser to the filter chain and whether
a filter in the chain after the ICUTokenizer could construct bigrams if the ICUTokenizer is
spitting out unigrams and the queryparser is then converting the unigrams to a Boolean clauses
(i.e. autoGeneratePhraseQueries=false.)  

If ABC is a string of Han characters and the ICUTokenizer spit out unigrams A B C  (and we
have autoGeneratePhraseQueries set to false) won't the next filter in the chain get each of
the unigrams in a Boolean clause one at a time?  I guess I don't see how the next filter in
the chain can reassemble the unigrams into overlapping bigrams.   Maybe I'm not understanding
how tokens get passed from one filter to the next when one of the filters (or in this case
the tokenizer) breaks a token up into multiple tokens.

Or am I getting index time analysis confused with query time analysis?

Did you mean that ICUTokenizer could be modified to output bigrams  or that a filter could
be designed that would take the output of the ICUTokenizer and create shingles on tokens with
the attribute for Han?


Tom

-----Original Message-----
From: Robert Muir [mailto:rcmuir@gmail.com] 
Sent: Friday, February 04, 2011 12:58 PM
To: java-user@lucene.apache.org
Subject: Re: Bigrams for CJK with ICUTokenizer ?

On Fri, Feb 4, 2011 at 12:46 PM, Burton-West, Tom <tburtonw@umich.edu> wrote:
> Hello all,
>
> We are using the ICUTokenizer because we have documents in about 400 different languages.
  We are also setting autoGeneratePhraseQueries to false so that CJK and other languages
that don't use space to separate words won't get tokenized properly by the ICUTokenizer and
then the tokens automatically searched as a phrase.
>
>  The ICUTokenizer emits unigrams for Chinese (HAN). We would prefer to use overlapping
bigrams as in the CJKAnalyzer.   Is it possible to configure the ICUTokenizer to emit overlapping
bigrams?
>
> Alternatively, is there some way to put some filter in the filter chain after the ICUTokenizer
that would produce overlapping bigrams for CJK?
>

Hi Tom, Let's open JIRA issue for this, we can add it.
The gist of it, is that ICUTokenizer sets a ScriptAttribute (an
integer) per token indicating its writing system.
So its easy to make an efficient filter that basically only "shingles"
on this attribute.

The reason there isnt one, is because I'd really like for us to
eventually somehow solve this with
https://issues.apache.org/jira/browse/LUCENE-2470

But for now, i think it would be good to be practical and add the
explicit filter (we can just mark the api experimental, hoping we will
make it more general with 2470) so people can easily get good out of
box performance in situations like yours.

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org

Mime
View raw message