嘿伙计们, 我试图为应用程序实现一些搜索功能。
在Tomcat7上运行Solr 1.4.1 使用View im索引与MS SQLServer建立JDBC连接 Solr已完成索引,索引正在运行。
要搜索Solr并与之通信,我已经创建了一个小测试WCF服务(稍后将通过我们的主服务实现)。
目的是在我们的主应用程序中实现文本字段。在此文本字段中,用户可以开始键入类似Paintbrush的内容,并在输入越来越多的字符时逐渐过滤对象列表。
这对Solr起到了很好的作用,直到某一点。我在我的查询结束时使用通配符星号,因此我投掷了很多请求,如 p * PA * 痛* 漆*
等。在服务器和它的返回结果很好(实际上相当令人印象深刻)。唯一的问题是,一旦用户输入整个单词,查询就是paintbrush *,此时solr返回0结果。
所以看起来查询+通配符只能是查询+东西而不是查询+没有
我设法让这个工作在Lucene.Net下工作,但Solr并没有像看起来那样做事。
您可以向我提供有关实施此功能的任何建议吗?
因为我使用SolrNet,所以没有太多代码可供查看:http://pastebin.com/tXpe4YUe
我认为它与Analyzer和Parser有关,但我还没有进入Solr,知道在哪里看:)
答案 0 :(得分:2)
我不会在Solr中使用前缀通配符查询来实现建议。还有其他机制更适合这样做。参见:
答案 1 :(得分:0)
词干似乎是造成这个问题的原因。我使用text_ws的克隆而不是类型的文本来修复它。 我对scema.xml的更改:http://pastebin.com/xaJZDgY4
禁用词干并启用小写索引。只要所有查询都是小写,他们就应该总是给出结果(如果有的话)。
问题似乎是分析人员不使用通配符,所以当使用通配符时,使约翰尼成为约翰尼或约翰尼的结果的逻辑会被“破坏”。
如果您遇到类似的问题并且我的解决方案在这里工作不起作用,您可以将debugQuery = on添加到您的查询字符串中,并查看更多有关最新情况的信息。这帮助我缩小了问题的范围。