gpt4 book ai didi

indexing - 基于句子而不是整个字段值构建 Solr 建议

转载 作者:行者123 更新时间:2023-12-04 04:38:06 24 4
gpt4 key购买 nike

我有一个带有建议器组件的 Solr 实例。它工作正常,使用 AnalyzingInfixLookupFactory执行。

但是,我想将建议扩展到 content字段,可以包含大量文本。建议者可以找到建议,但它返回整个字段值,而不仅仅是一个句子或句子的一部分。

所以,如果我想要一个关于“foo”的建议,以及 content字段包含如下文本:

“我真的很喜欢比萨饼。还有 donut 。让我们从另一个地方买一些。foo bar 的地方。”

建议是 全文 ,而不仅仅是“The foo bar place”。而且,很明显,当content数百字长,这只是不使用。

有没有办法限制返回的建议字数?

这是我的搜索组件:

<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">autocomplete</str>
<str name="lookupImpl">AnalyzingInfixLookupFactory</str>
<str name="indexPath">suggestions</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">suggest</str>
<str name="suggestAnalyzerFieldType">text_suggest</str>
<str name="buildOnStartup">false</str>
<bool name="highlight">false</bool>
<str name="payloadField">label</str>
</lst>
</searchComponent>

这是请求处理程序:

<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.dictionary">autocomplete</str>
<str name="suggest.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>

最后,这里是提出建议的领域:

<fieldType name="text_suggest" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

<field name="suggest" type="text_suggest" indexed="true" multiValued="true" stored="true"/>

然后我用了一堆 <copyField> s 将内容复制过来。

编辑 2015-08-28
content字段定义如下:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="txt/mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="txt/stopwords.txt" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" splitOnNumerics="0" preserveOriginal="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="25"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="txt/mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

<field name="content" type="text" indexed="true" stored="true" termVectors="true"/>

编辑 2016-09-28

这个问题可能是相关的: Is Solr SuggestComponent able to return shingles instead of whole field values?

最佳答案

我想您可能正在寻找的是 solr.ShingleFilterFactory ,它只允许根据字数限制标记大小,而不是 中的文本长度solr.NGramFilterFactory 你一直在尝试使用。
有关详细信息,请参阅 SOLR wiki 页面:
https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.ShingleFilterFactory

关于indexing - 基于句子而不是整个字段值构建 Solr 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32013439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com