ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – Lucene .NET的多短语同义词

2019-07-08 20:05:45  阅读:498  来源: 互联网

标签:c net lucene lucene-net synonym


参见英文答案 > Synonyms using Lucene                                    3个
我有一个使用lucene.Net的应用程序,我无法使用Lucene的同义词功能在搜索短语/术语中使用多个单词

例如,如果我想搜索单词“superman”并设置了同义词:
“蜘蛛侠”我希望(并且确实)取回与“蜘蛛侠”以及“超人”相关的结果

现在我想要的是搜索“正义联盟”,并将该术语的同义词设置为“复仇者联盟”.

并且还说“超人”和同义词“正义联盟”.

你有点得到我要去的地方.
我想总结一下能够设置多个短语的同义词.
我知道同义词确实是1个单词到1个单词,但有没有任何自定义方法与Lucene.NET或Lucene本身一般人们用来解决这个问题.
我听说lucene正在添加这个功能,但到目前为止我还没有看到任何东西,同时环顾四周我发现有用.

谢谢
埃德

解决方法:

看看solr.SynonymFilterFactory

请记住,虽然SynonymFilter会很乐意使用包含多个单词的同义词(例如:“sea biscuit,sea biscit,seabiscuit”).处理这样的同义词的推荐方法是在索引时扩展同义词.这是因为在查询时可能会出现两个潜在的问题:

> Lucene QueryParser在向分析器提供任何文本之前在空白区域上进行标记,因此如果一个人搜索单词sea biscit,分析器将单独给出单词“sea”和“biscit”,并且不会知道它们匹配a代名词.
>短语搜索(即:“sea biscit”)将导致QueryParser将整个字符串传递给分析器,但如果SynonymFilter配置为扩展同义词,那么当QueryParser从分析器获取结果的标记列表时,它将构造一个不具备所需效果的MultiPhraseQuery.这是因为分析仪可用的机制有限,表明两个术语占据相同的位置:没有办法表明“短语”占据与术语相同的位置.对于我们的例子,得到的MultiPhraseQuery将是“(sea | sea | seabiscuit)(饼干| biscit)”,这与文档中出现的“seabiscuit”的简单情况不符

标签:c,net,lucene,lucene-net,synonym
来源: https://codeday.me/bug/20190708/1405328.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有