代码之家  ›  专栏  ›  技术社区  ›  Chad H

Lucene。NET双向同义词

  •  0
  • Chad H  · 技术社区  · 6 年前

    我可以在我的自定义分析器中使用同义词,但只有当输入的短语与输入的“键”匹配时,它才能正常工作。我希望能够将2+列表中的任何同义词与 任何其他 同一列表中的同义词。

            var map = new SynonymMap.Builder(true);
            var synonyms = string.Join("\0", new string[] { "broken", "break", "malfunction" });
            map.Add(new CharsRef("broke"), new CharsRef(synonyms), true);
    
            stream = new SynonymFilter(stream, map.Build(), true);
    

    我应该为每个同义词添加地图吗?

            var synonyms2 = string.Join("\0", new string[] { "broke", "break", "malfunction" });
            map.Add(new CharsRef("broken"), new CharsRef(synonyms2), true);
            var synonyms3 = string.Join("\0", new string[] { "broken", "break", "broke" });
            map.Add(new CharsRef("malfunction"), new CharsRef(synonyms3), true);
    

    我可以清理它,使它在一个列表中循环,并为每个列表添加一个映射,我只是想把问题弄清楚。

    如果我有一个管理数百或数千个单词同义词的数据库。。。是否只需为每种可能的组合添加数万张地图?

    0 回复  |  直到 6 年前