質問編集履歴

2 もしかして、mode="search"とSynonymFilterFactoryは併用できない?を追記

c_a

c_a score 41

2017/05/10 22:41  投稿

Apache Solr シノニムフィルターでユーザ辞書が効かない
solr 6.5
を利用しています。
下記のスキーマ設定(managed-schema)のように、フィルターでSynonymFilterFactoryを利用して類義語変換をしようとしています。
(問題)
SynonymFilterFactoryの類義語変換は一応できるんですが、
類義語変換の際に指定しているJapaneseTokenizerFactoryのユーザ辞書(lang/userdict_ja.txt)は効いていないようで、下記のような事が起きてしまいます。
例)
ユーザ辞書に「形態素解析」を登録しています
シノニム辞書(synonyms.txt)に「形態素解析 => kuromoji」を登録しています。
しかし、「形態素解析」と入力しても、「kuromoji」と類義語変換されません。
おそらくフィルターの前の段階(分かち書きの処理)で「形態素」「解析」の2つ分割されているのだと思います。
下記の設定は間違っているのでしょうか?
(もしかして、mode="search"とSynonymFilterFactoryは併用できない?)  
[スキーマ設定]
```ここに言語を入力
<fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false">
   <analyzer type="index">
       <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt" />
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.JapaneseTokenizerFactory" userDictionary="lang/userdict_ja.txt"/>
       ・・以下略・・
   </analyzer>
   <analyzer type="query">
       <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt" />
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.JapaneseTokenizerFactory" userDictionary="lang/userdict_ja.txt"/>
       ・・以下略・・
   </analyzer>
</fieldType>
```
  • Apache Solr

    18 questions

    Solrは、全文検索ライブラリである Luceneを用いたオープンソースの検索エンジンサーバです。Javaで記述されており、高い全文検索能力を持ちます。ドキュメントの登録には、XML/JSON/CSVなどを用い、ファセット検索機能も備わっています。

1 スキーマファイルはmanaged-schemaを利用しています。

c_a

c_a score 41

2017/05/10 21:49  投稿

Apache Solr シノニムフィルターでユーザ辞書が効かない
solr 6.5
を利用しています。
下記のスキーマ設定のように、フィルターでSynonymFilterFactoryを利用して類義語変換をしようとしています。
下記のスキーマ設定(managed-schema)のように、フィルターでSynonymFilterFactoryを利用して類義語変換をしようとしています。
(問題)
SynonymFilterFactoryの類義語変換は一応できるんですが、
類義語変換の際に指定しているJapaneseTokenizerFactoryのユーザ辞書(lang/userdict_ja.txt)は効いていないようで、下記のような事が起きてしまいます。
例)
ユーザ辞書に「形態素解析」を登録しています
シノニム辞書(synonyms.txt)に「形態素解析 => kuromoji」を登録しています。
しかし、「形態素解析」と入力しても、「kuromoji」と類義語変換されません。
おそらくフィルターの前の段階(分かち書きの処理)で「形態素」「解析」の2つ分割されているのだと思います。
下記の設定は間違っているのでしょうか?
[スキーマ設定]
```ここに言語を入力
<fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false">
   <analyzer type="index">
       <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt" />
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.JapaneseTokenizerFactory" userDictionary="lang/userdict_ja.txt"/>
       ・・以下略・・
   </analyzer>
   <analyzer type="query">
       <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt" />
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.JapaneseTokenizerFactory" userDictionary="lang/userdict_ja.txt"/>
       ・・以下略・・
   </analyzer>
</fieldType>
```
  • Apache Solr

    18 questions

    Solrは、全文検索ライブラリである Luceneを用いたオープンソースの検索エンジンサーバです。Javaで記述されており、高い全文検索能力を持ちます。ドキュメントの登録には、XML/JSON/CSVなどを用い、ファセット検索機能も備わっています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る