1

以下のような内容の synonyms.txt ファイルがあります

car accessories, gadi marmat

また、カー アクセサリーを 1 つのトークンとしてインデックス化して、カー アクセサリーgadi marmatに拡張できるようにしています。

シノニム全体を一致させて、gadi marmatをクエリしたときに、カー アクセサリのレコードが返されるようにします。

gadi marmatを検索するときにgadigadi marmat およびmarmat展開されるように、シングル フィルター ファクトリを使用してクエリを展開しています。これは当てはまりませんが、カー アクセサリーを検索すると、結果が返されます。そのため、複数の単語を持つ同義語を索引付けする prblm である必要があります。

提案してください。

4

1 に答える 1

3

同義語ファイルは、検索している単語を変更するためにのみ使用されます。だからあなたが書くなら

カーアクセサリー=>ガディマーマット

コンパイラが「カーアクセサリー」に一致する場合、「gadimarmat」に一致しようとします

単一のトークンのように機能します

そのようなアナライザー要素を混合すると、良い結果を得ることができます

@AnalyzerDef(name = "integram",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
     @TokenFilterDef(factory = LowerCaseFilterFactory.class),
     @TokenFilterDef(factory = StopFilterFactory.class, params = {
         @Parameter(name = "words", value = "lucene/dictionary/stopwords.txt"),
         @Parameter(name = "ignoreCase", value = "true"),
         @Parameter(name = "enablePositionIncrements", value = "true")
     }),
     @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = {
            @Parameter(name = "language", value = "English")
     }),
     @TokenFilterDef(factory = SynonymFilterFactory.class, params = {
         @Parameter(name = "synonyms", value = "lucene/dictionary/synonyms.txt"),
         @Parameter(name = "expand", value = "false")
     }),
     @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = {
            @Parameter(name = "language", value = "English")
     })
})
于 2012-10-12T09:08:42.993 に答える