0

我的Solr 4.0设置中有以下索引文档,其标题字段包含文档-

  1. 去工作
  2. 拓扑
  3. ... <更多>

我的标题字段为solr.StrField(字符串)。我也有另一个类型字段中copyField的字段,带有标记 器和过滤器。titletitle_tokensolr.TextFieldStandardTokenizerFactoryLowerCaseFilterFactory

当用户搜索 justTo时,为了获取以title开头的文档To,我查询Solr. title:To*工作正常。显示文档 1 和 2。

但是,当用户搜索To(在 To 之后有一个空格)时,我将此查询发送到Solrlike title:To *(在 To 和 * 之间有一个空格)。理想情况下,应该只显示第一个文档。但是,所有文档都会显示。

当我查询title:To *&debugQuery=true,查询被解析为"parsedquery_toString":"title:to title:*".

由于title:*会显示所有文件,所以显示所有文件。

我如何查询To *哪个会给我所有title以(To 之后有一个空格)开头To的文档,在这种情况下应该显示文档 1?

我在跑步Embedded Solr server中使用跑步。我用来查询和获取结果。Web AppTomcatsolrj

4

1 回答 1

2

您应该转义空格field:to\ *,以便形成的查询是title:to * 否则它将匹配所有文档。

还有通配符查询:-
请注意,引用的短语中不支持通配符。它们将被视为空白。

在前缀、通配符和模糊搜索中,不对搜索词进行文本分析。
因此To*,如果您使用小写过滤器,则不会匹配索引文档。

于 2013-02-16T09:48:23.607 回答