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