Solr全名搜索

时间:2013-05-10 15:42:48

标签: solr

我正在尝试在Solr中设置全名搜索。直到现在我才认为我的工作很好,直到我发现一些奇怪的东西,我无法弄清楚如何纠正它。

所以我希望能够对全名进行搜索。我的索引是一个数据库,我获取名字和姓氏,并将它们放在一个带有关键字标记符的多值字段中。

这是我的字段类型:

<fieldType name="text_auto" class="solr.TextField">
  <analyzer>
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.ASCIIFoldingFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

一切正常,我只能搜索名字或姓氏,它会给我存在的全名,如果没有拼写错误,它也适用于任何顺序的全名。

我刚注意到有些不对劲!例如,如果我要求杜邦杜邦,它会给我每一个存在的杜邦,甚至是第一个名字与杜邦不匹配的杜邦。我想这是因为在全名中第二次发现了dup ...问题是,如果他们正在寻找“dupont d”,他们会发现每个Dupont都存在,因为“d”包含在Dupont中!那不是我想要的,我想用他们的名字(另一个字符串)找到每个杜邦d。

所以我需要找到一种方法使它工作,我尝试了许多不同的标记器和过滤器,但我担心它不可能...... 感谢您提供给我的任何帮助!

1 个答案:

答案 0 :(得分:0)

听起来像是在寻找类似的东西:

q=dupont d

dupont dupont的情况下,以任何顺序查找条款,或者甚至作为索引中的相同术语,都没有问题(顺便说一句,我假设您正在设置默认运算符为AND,因为这种行为令人惊讶)。如果您想按顺序查找短语“dupont d”,则应使用带引号的短语查询进行搜索:

q="dupont d"

dupont dupont

q="dupont dupont"