我正在尝试获取有关搜索字词的自动建议。但是我遇到了一个问题,即包含“-”和“&”等字符的单词仅在一个字符后被拆分。

例:

/solr/terms/?terms=true&terms.fl=item&terms.limit=10&terms.sort=count&terms.prefix=t

<response>
    <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">1</int>
    </lst>
    <lst name="terms">
        <lst name="item">
            <int name="top">11335</int>
            <int name="tshirt">10249</int>
            <int name="t">10156</int>
            <int name="trouser">4771</int>
            <int name="tight">1577</int>
        </lst>
    </lst>
</response>

问题在于 t恤 t 。 “t”仅出现在“t恤”中。因此,如果后面没有空格,如何防止Solr在一个字符之后拆分单词。 “t恤”应拆分-“t恤”和“h&m”不应拆分。

谢谢你的帮助!

最佳答案

项目的字段类型似乎是文本,其中WordDelimiterFilterFactory是分析中的过滤器之一。
默认情况下,WordDelimiterFilterFactory将在字内定界符上拆分。
因此,T恤将生成两个标记t和t恤,因此术语t会出现在您的身上。

如果要使用自动建议的术语,请根据要求删除或调整WordDelimiterFilterFactory。
您可以将TextField与WhitespaceTokenizerFactory等基本配置一起使用,并在其上应用较低的ascii折叠过滤器,以使对令牌的分析最少,并且不会显得零碎。

10-07 23:34