我正在尝试获取有关搜索字词的自动建议。但是我遇到了一个问题,即包含“-”和“&”等字符的单词仅在一个字符后被拆分。
例:
/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折叠过滤器,以使对令牌的分析最少,并且不会显得零碎。