私はLucene.netを使用しています。製品のデータベース内のアイテムに異なる名前を付けたり、スペルが異なると、拡張された用語を提供するためにSynonymFilterを実装しようとしています。 "spanner"> "wrench"、または "lawnmower"> "lawn mower"を選択します。テスト・I・セットアップとしてLucene.Net複数の語句を含むSynonymFilter
SynonymMap次のように:「スパナ」または「レンチ」の検索
String base1 = "lawnmower";
String syn1 = "lawn mower";
String base2 = "spanner";
String syn2 = "wrench";
SynonymMap.Builder sb = new SynonymMap.Builder(true);
sb.Add(new CharsRef(base1), new CharsRef(syn1), true);
sb.Add(new CharsRef(base2), new CharsRef(syn2), true);
SynonymMap smap = sb.Build();
は「芝刈り機」または「芝刈り機」を検索中のいずれかの単語をすべての用語に戻します入力検索条件に正確に一致する用語を戻します。
シノニム内の複数の語句に対して何か別のことが必要ですか?
また、「lawnmower」、「lawn mower」、「mower」、「grass cutter」などの用語を3つ以上に拡張するにはどうすればよいですか?
おかげ
ありがとうございました。私が3つ以上の用語をすべて互いにマップしたい場合、どのようにして3つ以上の用語、例えば「芝刈り機」、「芝刈り機」、「草刈り機」、「草刈り機」に拡張するのですか?各バリエーションをお互いにマップする必要がありますか? – chilluk
わかりませんが、それがうまくいく唯一の方法であることは妥当と思われます。すべてのシノニムをリストに追加し、[この組み合わせの拡張方法](https://stackoverflow.com/a/32479803/)を使用してすべてのマッピングを追加することで、すべての組み合わせを簡単に追加することができます。 – NightOwl888
したがって、> b、b> a、a> c、c> a、b> c、c> bを追加する必要がありますか?私は組み込みのインデックスと入力クエリの両方でこれを行うために探していますか?私のソースデータでは、用語のバリエーションが異なる可能性があります。明らかに、人々がどのように検索するのか予測できません。または、すべての代替条件を探すためにクエリを処理するだけで十分ですか?シノニムを追加するときに元の値を保持しますか?ボンネットの下で何が起こっているのかを知るために何が作られているのかを「見る」ことができないので、ベストなアプローチをとることができます。 – chilluk