【发布时间】:2016-05-24 23:00:21
【问题描述】:
我在 Solr 中做了如下类型定义:
<fieldType name="text_phrase" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldType>
它应该逐字索引值(没有标记化)。
我将值“紧身牛仔裤”添加到我的索引中。
当我运行以下搜索查询(url 解码以供阅读)时,我得到 no results:
http://myvm:8983/solr/mycore/select?q=*:*&fq=name:("skinny jeans")&wt=json&indent=true&debugQuery=true
您可以看到 URL 正在搜索所有内容 (*:*),过滤器查询的确切值是“紧身牛仔裤”。
然后我将值“jeans”添加到我的索引中,并使用
运行类似的查询&fq=name:("jeans")
我确实找到了“牛仔裤”元素。
所以它适用于单个单词,但不适用于多个单词。为什么会这样?毕竟,我正在寻找一个确切的值。这让我怀疑 KeywordTokenizerFactory 正在做一些奇怪的事情。谁能告诉我为什么这样的基本设置没有返回任何结果?
谢谢,
【问题讨论】: