使用Drupal7中的SearchAPI模块,使用autocomplete在ApacheSolr中搜索整个名称

使用Drupal7中的SearchAPI模块,使用autocomplete在ApacheSolr中搜索整个名称,solr,autocomplete,drupal-7,solr-search,Solr,Autocomplete,Drupal 7,Solr Search,我在ApacheSolr中索引了firstname和lastname。我的要求是当用户输入firstname时,在autocomplete中以“firstname lastname”的形式获取全名。为此,我为另一个名为fullname的字段编制了索引,该字段结合了firstname和lastname,中间有空格。我使用search\u api\u autocomplete模块实现了自动完成工作。但问题是。假设我想在自动完成建议中使用“Christian Bale”。当我输入'Christian'

我在ApacheSolr中索引了firstname和lastname。我的要求是当用户输入firstname时,在autocomplete中以“firstname lastname”的形式获取全名。为此,我为另一个名为fullname的字段编制了索引,该字段结合了firstname和lastname,中间有空格。我使用search\u api\u autocomplete模块实现了自动完成工作。但问题是。假设我想在自动完成建议中使用“Christian Bale”。当我输入'Christian'时,我得到了正确的建议,但当我输入空格输入'Bale'时,建议消失了。“我的全名”字段的类型为全文,而“名字”和“姓氏”字段的类型为字符串

我已经尝试了多种不同的标记器和过滤器,但无法找到它

这是我在schema.xml文件中的配置

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                />
        <filter class="solr.WordDelimiterFilterFactory"
                protected="protwords.txt"
                generateWordParts="0"
                generateNumberParts="0"
                catenateWords="0"
                catenateNumbers="0"
                catenateAll="0"
                splitOnCaseChange="0"
                preserveOriginal="1"/>
        <filter class="solr.LengthFilterFactory" min="1" max="100" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                />
        <filter class="solr.WordDelimiterFilterFactory"
                protected="protwords.txt"
                generateWordParts="0"
                generateNumberParts="0"
                catenateWords="0"
                catenateNumbers="0"
                catenateAll="0"
                splitOnCaseChange="0"
                preserveOriginal="1"/>
        <filter class="solr.LengthFilterFactory" min="2" max="100" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
      <analyzer type="multiterm">
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                />
        <filter class="solr.WordDelimiterFilterFactory"
                protected="protwords.txt"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="0"
                catenateNumbers="0"
                catenateAll="0"
                splitOnCaseChange="1"
                preserveOriginal="1"/>
        <filter class="solr.LengthFilterFactory" min="2" max="100" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
    </fieldType>


您的
索引的标记器在哪里?您是否直接将此字段用于自动完成建议?在这种情况下,您如何查询它?我在粘贴时错过了标记器。我已经编辑过了。我在视图中使用全文搜索过滤器进行查询。是的,我直接使用全名字段来提供建议。另外,您能告诉我为什么删除小写筛选器工厂时建议停止工作吗?我不想用小写字母为字段编制索引。为什么不想用小写字母为字段编制索引?原因是。。这就是它不起作用的原因。如果不将字段小写,
Foo
Foo
将被视为不相等,因此大小写必须匹配。还有什么原因让你有一个显式的多项分析器?尽可能简化你的链,然后从中开始构建。你的
索引
分析器的标记器在哪里?您是否直接将此字段用于自动完成建议?在这种情况下,您如何查询它?我在粘贴时错过了标记器。我已经编辑过了。我在视图中使用全文搜索过滤器进行查询。是的,我直接使用全名字段来提供建议。另外,您能告诉我为什么删除小写筛选器工厂时建议停止工作吗?我不想用小写字母为字段编制索引。为什么不想用小写字母为字段编制索引?原因是。。这就是它不起作用的原因。如果不将字段小写,
Foo
Foo
将被视为不相等,因此大小写必须匹配。还有什么原因让你有一个显式的多项分析器?尽可能简化你的链条,然后从中开始构建。