【发布时间】:2014-08-05 16:41:41
【问题描述】:
我在查询使用 PatternTokenizerFactory 标记化的 TextField 时遇到问题。
我使用的是 Solr 版本 4.7.2。
我的架构如下:
<field name="filter_amenity_codes" type="caretDelimited" indexed="true" stored="true" />
...
<fieldType class="solr.TextField" name="caretDelimited">
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern="\^"/>
</analyzer>
</fieldType>
字段值如下所示: "2^9^11^12^15^93"
现场分析看起来也不错。它似乎以我想要的方式标记化。 http://i.stack.imgur.com/WiraY.png
所以,现在我正在尝试查询此字段以用作过滤器。例如,我想查找所有包含代码 93 的文档。当我使用以下查询时,我总是得到 0 个文档作为响应。我尝试使用值 93、“93”、/93/,但这些都没有返回结果。
我正在使用的查询如下所示: filter_amenity_codes:93
这是响应的样子:
{
"response": {
"docs": [],
"numFound": 0,
"start": 0
},
"responseHeader": {
"QTime": 2,
"params": {
"_": "1407261941064",
"indent": "true",
"q": "filter_amenity_codes:93",
"wt": "json"
},
"status": 0
}
}
我在查询中有什么做得不对吗?还是我在架构中的字段设置不正确?
【问题讨论】:
-
您有包含“93”的文档吗?您的示例显示 94。
-
哦,糟糕,对不起,我在示例中的错误。是的,我有 93 个文件。
-
好的 - 你能添加你正在运行的实际查询吗?
-
当然。我刚刚用回复更新了我上面的帖子。它包含所有参数。
-
索引时字段末尾有空格吗?