Sitecore 7.2-Solr 4方面搜索建议-搜索结果中没有连字符

时间:2019-06-27 06:57:10

标签: solr sitecore

我正在向Solr发送一个请求,要求接收一个像这样的单词的建议:

http://localhost:8983/solr/mysearchindex/select?q=_templatename:Page&facet.field=pagecontent_t&facet.prefix=book&rows=0&facet=true&version=2.2&facet.sort=true

pagecontent_t是一个文本类型的计算字段,其中填充了Sitecore项目中的内容。其配置:

<field fieldName="PageContent" returnType="text">Feature.Search.ComputedFields.PageContentField, Feature.Search</field>

schema.xml中* _t字段的配置:

<dynamicField name="*_t" type="text_general" indexed="true" stored="true" />

<fieldType name="string" class="solr.TextField" sortMissingLast="true">
      <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
      </analyzer>
    </fieldType>

它适用于不带连字符的单词,但是对于包含连字符的单词,我完全没有结果。

我尝试使用字符串类型的复制字段“ pagecontent_s”。使用此功能,我得到带连字符的结果,但是整个页面的内容被返回,而不仅仅是匹配建议的单词。

我想念什么?提出建议与搜索词中的连字符一起使用的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

如果您只想在空格上拆分单词,将它们分隔开,不包括其他形式的标点符号,请为您的字段使用WhitespaceTokenizer而不是StandardTokenizer(或链中某处的WordDelimiterFilter)。

Facets是在索引的令牌上生成的,如果将令牌拆分成比您想要的碎片更小的碎片,那么这就是用于计算构面值的要素。请更正处理过程,以得到所需的结果(似乎只有空格才能分割标记)。