[ 
https://issues.apache.org/jira/browse/LUCENE-2167?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Muir updated LUCENE-2167:
--------------------------------

    Attachment: LUCENE-2167.patch

ok here is a patch file. before applying it, you have to run these commands:

{noformat}
# original grammar -> ClassicTokenizerImpl
svn move 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImplOrig.java
 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.java
svn move 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImplOrig.jflex
 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.jflex
# this one is not needed, this patch becomes the new grammar
svn delete 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl31.java
svn delete 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl31.jflex
# expose the old tokenizer, not just via Version, but also as 
ClassicAnalyzer/Tokenizer/Filter
svn copy 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardAnalyzer.java
 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicAnalyzer.java
svn copy 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java
 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizer.java
svn copy 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardFilter.java
 
modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicFilter.java
svn copy 
modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestStandardAnalyzer.java
 
modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestClassicAnalyzer.java
# temporarily edit 
solr/src/java/org/apache/solr/analysis/StandardFilterFactory.java (change the 
$Id hossman.... to just $Id$)
# apply the patch.
{noformat}

if you want to iterate on the patch, make your changes and generate a patch 
with 'svn --no-diff-deleted'.

some notes:
* patch is against 4.0, but i think we can do this in 3.1. all the back compat 
is preserved, etc. we just gotta figure a few things out. all the tests pass 
though.
* The patch is large mainly because of the DFA size. I have some concerns about 
this... the email/url stuff seems to be the culprit, as the UAX#29 generated 
class is only 12KB, about the same size as our existing standardtokenizer.
* I gave backwards compat (you get the old behavior) with Version, but also 
setup ClassicAnalyzer/Tokenizer/Filter for those that want the...not so 
international-friendly old version, for its company Identification, etc.
* I modified token types for icu to be more consistent with this.
* StandardFilter is currently a no-op for the new grammar. In my opinion this 
is a place to implement the 'more sophisticated' logic that the standard 
mentions for certain scripts. We can use token types (IDEOGRAPHIC, 
SOUTHEAST_ASIAN) to drive this. This way the standardanalyzer is a reasonable 
tokenizer for most languages.

So, not completely sure this is the best approach, but it is one... the patch 
is still rough around the edges but at least now we can iterate more easily on 
it.


> Implement StandardTokenizer with the UAX#29 Standard
> ----------------------------------------------------
>
>                 Key: LUCENE-2167
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2167
>             Project: Lucene - Java
>          Issue Type: New Feature
>          Components: contrib/analyzers
>    Affects Versions: 3.1
>            Reporter: Shyamal Prasad
>            Assignee: Robert Muir
>            Priority: Minor
>         Attachments: LUCENE-2167-jflex-tld-macro-gen.patch, 
> LUCENE-2167-jflex-tld-macro-gen.patch, LUCENE-2167-jflex-tld-macro-gen.patch, 
> LUCENE-2167-lucene-buildhelper-maven-plugin.patch, 
> LUCENE-2167.benchmark.patch, LUCENE-2167.benchmark.patch, LUCENE-2167.patch, 
> LUCENE-2167.patch, LUCENE-2167.patch, LUCENE-2167.patch, LUCENE-2167.patch, 
> LUCENE-2167.patch, LUCENE-2167.patch, LUCENE-2167.patch, LUCENE-2167.patch, 
> LUCENE-2167.patch, LUCENE-2167.patch, LUCENE-2167.patch, LUCENE-2167.patch, 
> standard.zip
>
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> It would be really nice for StandardTokenizer to adhere straight to the 
> standard as much as we can with jflex. Then its name would actually make 
> sense.
> Such a transition would involve renaming the old StandardTokenizer to 
> EuropeanTokenizer, as its javadoc claims:
> bq. This should be a good tokenizer for most European-language documents
> The new StandardTokenizer could then say
> bq. This should be a good tokenizer for most languages.
> All the english/euro-centric stuff like the acronym/company/apostrophe stuff 
> can stay with that EuropeanTokenizer, and it could be used by the european 
> analyzers.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to