sha*_*sta 15 lucene search solr fuzzy-search edismax
我只是冒险进入看似简单但非常复杂的搜索世界.对于应用程序,我需要构建一个搜索机制,以按名称搜索用户.
阅读了大量的帖子和文章,包括:
如何使用Lucene进行个人姓名(名字,姓氏)搜索?
http://dublincore.org/documents/1998/02/03/name-representation/
通过优先考虑用户关系来搜索社交网络的最佳方式是什么?
http://www.gossamer-threads.com/lists/lucene/java-user/120417
Lucene索引和查询设计问题 - 搜索人员
Lucene模糊搜索客户名称和部分地址
......以及其他一些我现在无法找到的人.在我的机器上进行至少索引和基本搜索工作我已经为用户搜索设计了以下方案:
1)具有第一,第二和第三名称字段并使用Solr对其进行索引
2)使用edismax作为多列搜索的requestParser
3)使用标准化过滤器的组合,例如:音译,拉丁语到ascii convesrion等
.4 )最后使用模糊搜索
很明显,对于这方面的新手,我不确定上述是否是最好的方法,并希望听到在这个领域比我更有想法的有经验的用户.
我需要能够通过以下方式匹配名称:
1)口音折叠:Jorn匹配Jörn,反之亦然
2)替代拼写:Karl匹配Carl,反之亦然
3)缩短陈述(我相信我使用SynonymFilterFactory):Sue匹配Susanne等
.4)Levenstein匹配:Jonn匹配John等
.5)Soundex匹配:Elin和Ellen
任何指导,批评或评论都是非常受欢迎的.如果可能的话请告诉我......或者我只是白日做梦.:)
编辑
我还必须补充一点,我也有一个全名字段,以防有些人有长名字,作为其中一个帖子的例子:Jon Paul或Del Carmen也应该匹配Jon Paul Del Carmen
由于这是一个新项目,我可以以任何我认为合适的方式修改架构和架构,因此限制非常有限.
听起来你正在为一个语料库提供一些你需要非常松散匹配的搜索?
如果您这样做,您将需要选择字段并设置不同的提升来对结果进行排名.
所以在solr中有单独的"复制"字段:
名称的同义词,我不知道是否有公共同义词db.
模糊搜索,我发现它没有用,它使用Levenshtein距离.
其他过滤器和索引获得更优越的"搜索相关"结果.
可以使用ASCIIFoldingFilterFactory处理名称中的Unicode字符
您正在为预期的用例预先描述解决方案.
如果您想获得高质量的结果,请计划调整您的搜索相关性
当尝试匹配同义词时,这种调整将特别有价值,例如MacDonald和McDonald(其具有比Carl和Karl更大的Levenshtein距离).