Autocomplete 我们是否可以在不存储字段而仅索引的情况下实现Solr auto suggest

Autocomplete 我们是否可以在不存储字段而仅索引的情况下实现Solr auto suggest,autocomplete,solr,autosuggest,Autocomplete,Solr,Autosuggest,我打算使用Solr实现类似Google的自动建议/完成。我有两个与此相关的问题: 我们是否可能只索引而不存储一个字段,假设自动完成将在该字段上运行,或者假设terms组件将在该字段上运行 我们可以使用多个字段获取数据来填充自动建议吗?如果可以,那么这些字段只能用作索引,而不能用作存储 如果有人应用了这个,并尝试了这样的实现,并且可以帮助我,我会非常满意 谢谢 Saif在SOLR for autocomplete中,您必须将搜索的ngram字段定义为存储字段,以便返回值 此外,我认为在SOLR中,

我打算使用Solr实现类似Google的自动建议/完成。我有两个与此相关的问题:

  • 我们是否可能只索引而不存储一个字段,假设自动完成将在该字段上运行,或者假设terms组件将在该字段上运行

  • 我们可以使用多个字段获取数据来填充自动建议吗?如果可以,那么这些字段只能用作索引,而不能用作存储

  • 如果有人应用了这个,并尝试了这样的实现,并且可以帮助我,我会非常满意

    谢谢
    Saif

    在SOLR for autocomplete中,您必须将搜索的ngram字段定义为存储字段,以便返回值


    此外,我认为在SOLR中,您无法从多个字段获取数据并从中提取单个ngram。更简单的方法是创建一个字段,并将所有其他要使用的字段中的数据复制到该字段中,然后对其应用ngram标记。

    在SOLR for autocomplete中,您必须将要搜索的ngram字段定义为存储字段,以便返回值


    此外,我认为在SOLR中,您无法从多个字段获取数据并从中提取单个ngram。更简单的方法是创建一个字段,并将所有其他要使用的字段中的数据复制到该字段中,然后对其应用ngram标记化。

    您正在查找,可以查询该字段以返回索引字段中的术语及其频率。具体来说,您需要
    terms.prefix
    参数,该参数将返回以指定前缀开头的所有术语。

    您正在查找,可以查询该参数以返回索引字段中的术语及其频率。具体来说,您需要
    terms.prefix
    参数,该参数将返回以指定前缀开头的所有术语。

    solr允许将copyfield用作自动完成的索引。这是我在solr auto suggest/auto complete中的工作示例,
    。很明显,solr将只索引您将在autocomplete中使用的字段

    另一方面,除非存储字段,否则无法检索字段,这里我指的是原始字段而不是复制的字段。我的建议是复制可搜索字段ex:name,然后根据查询本身检索所有其他字段。您需要创建自定义的搜索处理程序和请求处理程序

    稍后,我将使用完整解决方案编辑此内容


    您可以使用本文了解更多关于该主题的信息,然后扩展您的解决方案

    solr允许将copyfield用作自动完成的索引。这是我在solr auto suggest/auto complete中的工作示例,
    。很明显,solr将只索引您将在autocomplete中使用的字段

    另一方面,除非存储字段,否则无法检索字段,这里我指的是原始字段而不是复制的字段。我的建议是复制可搜索字段ex:name,然后根据查询本身检索所有其他字段。您需要创建自定义的搜索处理程序和请求处理程序

    稍后,我将使用完整解决方案编辑此内容


    您可以使用本文了解更多关于该主题的信息,然后扩展您的解决方案

    在Solr4.0中,有一个新组件叫做Suggester。它使用拼写检查组件根据现有索引生成建议

    我仍然在为Suggester组件调整我的字段类型,但这里是到目前为止我所拥有的,它似乎工作得很好

        <fieldtype name="textSuggest" class="solr.TextField" positionIncrementGap="100">
            <analyzer type="index">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.PatternReplaceFilterFactory"
                   pattern="(^[^A-Za-z0-9]*|[^A-Za-z0-9]*$)" replacement=""  replace="all" />
                <filter class="solr.LengthFilterFactory" min="2" max="60" />
                <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" />
                <filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true" outputUnigramIfNoNgram="true" />
                <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
            </analyzer>
            <analyzer type="query">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" />
                <filter class="solr.ShingleFilterFactory" maxShingleSize="99" outputUnigrams="false" outputUnigramIfNoNgram="true" />
            </analyzer>
        </fieldtype>
    

    在Solr 4.0中,有一个新组件叫做Suggester。它使用拼写检查组件根据现有索引生成建议

    我仍然在为Suggester组件调整我的字段类型,但这里是到目前为止我所拥有的,它似乎工作得很好

        <fieldtype name="textSuggest" class="solr.TextField" positionIncrementGap="100">
            <analyzer type="index">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.PatternReplaceFilterFactory"
                   pattern="(^[^A-Za-z0-9]*|[^A-Za-z0-9]*$)" replacement=""  replace="all" />
                <filter class="solr.LengthFilterFactory" min="2" max="60" />
                <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" />
                <filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true" outputUnigramIfNoNgram="true" />
                <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
            </analyzer>
            <analyzer type="query">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" />
                <filter class="solr.ShingleFilterFactory" maxShingleSize="99" outputUnigrams="false" outputUnigramIfNoNgram="true" />
            </analyzer>
        </fieldtype>
    
    
    
    我正在编写一份更详细的关于使用术语自动完成的指南Component at-在我充实该草案时,请随时向我提问更多问题。我正在编写一份更详细的关于使用术语自动完成的指南Component at-在我充实该草案时,请随时向我提问更多问题。回答得好,我想指出,Suggester在Solr上从3.1版开始提供,而不仅仅是在4.0版。回答好,我想指出Suggester在Solr上从3.1版开始提供,而不仅仅是在4.0版。