2010-07-12 245 views
6

我在使用edismax处理程序执行lucene语法中的通配符搜索时遇到问题。我从主干每晚建立Solr 4.0。Solr中的通配符搜索

像'computer'这样的常规搜索会返回结果,但'er er'不会返回任何结果。类似的,像'co?mput?r'这样的搜索没有结果。当前通用搜索的唯一类型是带有尾随通配符的类型(如compute?或comput)。

我希望能够在开始时使用通配符(puter)和之间(com er)进行搜索。有人可以告诉我我做错了什么,以及如何解决它。

谢谢。

Regards,
Imran。

回答

0

随着edismax,领先的通配符是没有问题的。我只是重新测试它。

中期的通配符也没有问题。

看起来还有其他问题。你确定你在使用edismax吗?

+0

感谢您的回应。我使用的edismax处理程序是:http://drupal.org/files/issues/713142-solrconfig-1_0.patch 我每晚都会安装Solr 4.0,并在将QueryType设置为'edismax'后查询现有索引。 请你指出我做错了什么?谢谢。 – 2010-07-12 16:32:57

+0

有点难以回答,但你的战争档案有多大?我的drupal战争实际上并不支持edismax。 – Jem 2010-07-12 17:11:14

+0

我没有使用任何war文件。我通过jar(start.jar)启动Solr服务器并使用SolrJ进行索引和搜索。在搜索时,我将QueryType设置为'edismax'。普通文本搜索完美无缺,只有通配符不起作用。任何想法什么是错的? – 2010-07-12 17:21:15

5

除非您激活reverse string filter,否则领先的通配符将不起作用。要在Solr中使用它,请将ReversedWildcardFilterFactory添加到您想要使用前导通配符搜索的字段的分析器中。

至于你的其他查询返回0结果,尝试使用卢克看看你的条款是如何进行分析(存储在索引中)。如果你使用它,不要忘记考虑到阻塞的影响。

+0

感谢您的回复。你能告诉我如何激活反向字符串过滤器吗? – 2010-07-12 14:52:05

+0

查看我的更新,了解如何在solr中使用它。请告诉我们它是如何去的,因为我从来没有真正使用它... – 2010-07-12 15:17:20