0

我正在尝试在 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 的名字中都有广告(另一个字符串)。

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

4

1 回答 1

0

听起来您正在搜索以下内容:

q=dupont d

dupont dupont(顺便说一下,我假设您将默认运算符设置为AND,因为这种行为令人惊讶)。如果要按该顺序查找短语“dupont d”,则应使用带引号的短语查询进行搜索:

q="dupont d"

或为dupont dupont

q="dupont dupont"
于 2013-05-10T15:58:29.903 回答