我正在尝试在 Solr 中设置全名搜索。直到现在我都认为我的工作很好,直到我发现了一些奇怪的东西,我不知道如何纠正它。
所以我希望能够搜索全名。我的索引是一个数据库,我在其中获取名字和姓氏,并将它们放在一个带有关键字标记器的多值字段中。
这是我的字段类型:
<fieldType name="text_auto" class="solr.TextField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
一切正常,我只能搜索名字或姓氏,它给了我存在的全名,如果没有拼写错误,它也适用于任何顺序的全名。
我刚刚发现有问题!例如,如果我要求 Dupont dupont,它会给我所有存在的 Dupont,即使是名字与 dupont 不匹配的那些。我想这是因为 dup 在全名中第二次被发现......问题是,如果他们正在寻找“dupont d”,他们会找到存在的每个 Dupont,因为“d”包含在 Dupont 中!这不是我想要的,我想找到每个 Dupont 的名字中都有广告(另一个字符串)。
所以我需要找到一种让它工作的方法,我尝试了许多不同的标记器和过滤器,但我担心这是不可能的......谢谢你能为我提供的任何帮助!