2011-07-08 35 views
1

我的网站上有一个搜索自动完成功能,我使用Solr来查找匹配的文档。我试图在页面标题上获得部分匹配,所以例如Java *会匹配Java,Javascript等等。到目前为止,自动完成的设置是为了让我在页面中的所有文本部分匹配,一些奇怪的结果,所以我决定切换到使用页面标题。但是,当我尝试将页面文本的text的搜索词切换为title时,该查询突然不再拾取部分匹配。这里是我的原始查询的例子:Solr查询返回的是一个字段的部分匹配,而不是另一个字段

q=text:java^2+text:"java" 
    &hl=true&hl.snippets=1&hl.fragsize=25&hl.fl=title&start=0&rows=3 

不幸的是,谁对我处理这件事了,那家伙不会和我一起工作了,所以我根本不知道发生了什么事情“引擎盖下”。如果这有什么区别,我使用Spring/J2EE作为后端。

回答

2

您需要确保该字段不是基于字符串的字段。如果你看一下你的schema.xml,你可以查找这个。如果在字符串字段内使用Java*进行搜索,它将仅匹配以Java*开头的标题。

另一件事是,您需要确保您知道通配符查询区分大小写(see this)。

+0

奇怪的是,我们以前使用不使用通配符的所有查询,它仍然拿起部分匹配。为什么会这样? – therin

+0

这取决于一点。如果您配置了标记器,则可以根据特定条件标记字词。有例如因此,如果您搜索与Java2Me Java的文本其将在''java''2' me'像'Java2Me'一个PatternTokenizer也将被退回。 – fyr

0

取决于字段标题是如何进行分析,看schema.xml中看到什么类型的字段和它如何分析创造的术语。简单的方法来做到这一点会去Solr管理http://localhost:8983/solr/admin/analysis.jsp,选择同名选项,输入字段名(猜“标题”)把一些示例文本和查询看到创建和匹配什么样的条件。

相关问题