2017-01-02 55 views
0

我现在面临使用Solr的4.9使用Drupal-7和搜索API的一个问题。当我用感叹号(!)的组合搜索时,solr返回空结果。Solr的返回空结果时,搜索“OMG!*”

E.g:

http://localhost:8983/solr/collection1/select?q=OMG!*&wt=json 

上面的查询返回空结果。然而,在文件没有与此字数据:

1. "tm_title": [ 
      "OMG! Ranveer Singh admits to having a 'Casting Couch' experience " 
     ] 
2. "tm_title": [ 
      "OMG! Rajinikanth was supposed to dub for 'Dangal'" 
     ] 

结果应该为我寻找这个词开始返回此两文件“妈呀!”然后是任何东西(*)。

编辑: 以下是druapl搜索API标题字段配置。 enter image description here

+0

请分享用于字段tm_title的字段类型?搜索取决于字段是如何被索引的? –

+0

是的,它的文本类型。 – vijay

+0

这将是很好,如果你可以分享的字段类型..fieldType在那里将所定义的分析和过滤器的定义....你会发现在schema.xml中 –

回答

2

当你使用通配符时,分析仪序列大多跳过。由于内容可能被索引为“omg”(您可以通过使用管理界面的分析页面来确认此内容),试图匹配以“OMG!”开头的令牌。将无法工作(它可能会搜索“omg!”,因为lowercasefilter是multiterm意识到的)。

如果您放弃'!'从你的通配符中,你可能会受到打击 - 或者你放弃了通配符。

+0

是的......我也试着用“!”搜索和通配符...它不起作用...例如,如果我搜索'布拉瓦!'...我得到结果...并且如果我用'布拉瓦!*'搜索它不会让我结果...好赶MatsLindh ... –

+0

嗨@MatsLindh,当我只用“OMG!”搜索时这是回报我的结果。 – vijay

+0

是的,因为然后完整的分析链运行,剥离'!'并执行与内容索引时相同的处理。当您使用通配符时,跳过该分析链的多个步骤(除了过滤器是multitermaware) - 因此令牌不匹配。 – MatsLindh