apache / apache/lucene

Japanese Tokenizer (Kuromoji) cannot build UniDic dictionary [LUCENE-4056]

Open
#5,128 10 comments 0 reactions 0 assignees View on GitHub
affects-version:3.6 legacy-jira-priority:Major module:analysis type:enhancement
Dominant language
Java
Stars
3.6k
Forks
1.4k
Avg merge
2d 11h
Merged PRs (30d)
88

Description

I tried to build a UniDic dictionary for using it along with Kuromoji on Solr 3.6. I think UniDic is a good dictionary than IPA dictionary, so Kuromoji for Lucene/Solr should support UniDic dictionary as standalone Kuromoji does.

The following is my procedure:
Modified build.xml under lucene/contrib/analyzers/kuromoji directory and run 'ant build-dict', I got the error as the below.

build-dict:
[java] dictionary builder
[java]
[java] dictionary format: UNIDIC
[java] input directory: /home/kazu/Work/src/solr/brunch_3_6/lucene/build/contrib/analyzers/kuromoji/unidic-mecab1312src
[java] output directory: /home/kazu/Work/src/solr/brunch_3_6/lucene/contrib/analyzers/kuromoji/src/resources
[java] input encoding: utf-8
[java] normalize entries: false
[java]
[java] building tokeninfo dict...
[java] parse...
[java] sort...
[java] Exception in thread "main" java.lang.AssertionError
[java] encode...
[java] at org.apache.lucene.analysis.ja.util.BinaryDictionaryWriter.put(BinaryDictionaryWriter.java:113)
[java] at org.apache.lucene.analysis.ja.util.TokenInfoDictionaryBuilder.buildDictionary(TokenInfoDictionaryBuilder.java:141)
[java] at org.apache.lucene.analysis.ja.util.TokenInfoDictionaryBuilder.build(TokenInfoDictionaryBuilder.java:76)
[java] at org.apache.lucene.analysis.ja.util.DictionaryBuilder.build(DictionaryBuilder.java:37)
[java] at org.apache.lucene.analysis.ja.util.DictionaryBuilder.main(DictionaryBuilder.java:82)

And the diff of build.xml:

===================================================================
— build.xml (revision 1338023)
+++ build.xml (working copy)
`@@` -28,19 +28,31 `@@`
<property name="maven.dist.dir" location="../../../dist/maven" />

<!-- default configuration: uses mecab-ipadic -->
+ <!--


<!-- alternative configuration: uses mecab-naist-jdic

-
+
+ <!-- alternative configuration: uses UniDic -->
+ <property name="ipadic.version" value="unidic-mecab1312src" />
+ <property name="dict.src.file" value="unidic-mecab1312src.tar.gz" />
+ <property name="dict.loc.dir" value="/home/kazu/Work/src/nlp/unidic/_archive"/>
+
<property name="dict.src.dir" value="${build.dir}/${ipadic.version}" />
+ <!--

+ <property name="dict.encoding" value="utf-8"/>
+ <property name="dict.format" value="unidic"/>
+
<property name="dict.normalize" value="false"/>
<property name="dict.target.dir" location="./src/resources"/>

`@@` -58,7 +70,8 `@@`

<target name="compile-core" depends="jar-analyzers-common, common.compile-core" />
<target name="download-dict" unless="dict.available">
- <get src="${dict.url}" dest="${build.dir}/${dict.src.file}"/>
+ <!-- get src="${dict.url}" dest="${build.dir}/${dict.src.file}"/ -->
+ <copy file="${dict.loc.dir}/${dict.src.file}" tofile="${build.dir}/${dict.src.file}"/>
<gunzip src="${build.dir}/${dict.src.file}"/>
<untar src="${build.dir}/${ipadic.version}.tar" dest="${build.dir}"/>
</target>

---
Migrated from [LUCENE-4056](https://issues.apache.org/jira/browse/LUCENE-4056) by Kazuaki Hiraga (@hkazuakey), updated Oct 16 2019
Environment:
```
Solr 3.6
UniDic 1.3.12 for MeCab (unidic-mecab1312src.tar.gz)
```

Attachments: [LUCENE-4056.patch](https://apache.github.io/lucene-jira-archive/attachments/LUCENE-4056/LUCENE-4056.patch)
Linked issues:
- #9860

Contributor guide

Open the contributing guide

Research direction

Reproduce the failure with ant build-dict using lucene/contrib/analyzers/kuromoji/build.xml and the UniDic 1.3.12 source. Start at BinaryDictionaryWriter.java:113 and TokenInfoDictionaryBuilder.java:141, then inspect the attached LUCENE-4056.patch. Done means the UniDic dictionary builds successfully with the reported configuration and remains compatible with Kuromoji.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
search
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.