Ed.*_*Ed. 16 lucene lucene.net
使用Lucene处理同义词(短语)的最佳方法是什么?特别是,当我需要执行以下查询时:a OR b OR c NOT d
如何在编制索引时为每个文档添加一个名为"同义词"的新字段?该字段的值将包含所有同义词的列表.仅当该文档具有任何同义词时,才会将其添加到文档中.
然后,我将执行"OR"搜索查询,该查询将在此字段中查找搜索关键字以及其他字段.
这种方法可以适用于任何类型的查询吗?
仅供参考,我的应用程序中的同义词完全是自定义的,而不是来自英语词典...即."全球金融领袖"也可能意味着"顶级投资银行"或"财富500强金融公司"等.
请建议.
谢谢.
Ada*_*ter 12
Lucene项目有一个名为"wordnet"的贡献.根据其文件:
该软件包使用WordNet定义的同义词来构建存储它们的Lucene索引,这些索引又可用于查询扩展.您通常运行Syns2Index一次以构建查询索引/"数据库",然后调用SynExpand.expand(...)来扩展查询.
它包括它的作用样本:
如果您传入查询"大狗",那么它打印出来:
查询:
big adult^0.9 bad^0.9 bighearted^0.9 boastful^0.9 boastfully^0.9 bounteous^0.9 bountiful^0.9 braggy^0.9 crowing^0.9 freehanded^0.9 giving^0.9 grown^0.9 grownup^0.9 handsome^0.9 large^0.9 liberal^0.9 magnanimous^0.9 momentous^0.9 openhanded^0.9 prominent^0.9 swelled^0.9 vainglorious^0.9 vauntingly^0.9 dog andiron^0.9 blackguard^0.9 bounder^0.9 cad^0.9 chase^0.9 click^0.9 detent^0.9 dogtooth^0.9 firedog^0.9 frank^0.9 frankfurter^0.9 frump^0.9 heel^0.9 hotdog^0.9 hound^0.9 pawl^0.9 tag^0.9 tail^0.9 track^0.9 trail^0.9 weenie^0.9 wiener^0.9 wienerwurst^0.9
你看到原始单词("大"和"狗")没有附加权重.但是,同义词具有可以自行配置的权重(0.9).
它与"contrib"目录中的Lucene标准发行版捆绑在一起.