2011-01-20 91 views
1

嘿伙计们, 我试图在应用程序中实现一些搜索功能。Solr/SolrNet - 使用通配符进行逐字母搜索

Solr 1.4.1在Tomcat7上运行 使用View im索引连接到MS SQLServer的JDBC连接 Solr已完成索引并且索引正在工作。

要搜索和我创建了一个小测试WCF服务与Solr的沟通(与我们的主要服务后实施)。

目的是在我们的主应用程序中实现一个文本框。在此文本字段中,用户可以开始输入诸如画笔之类的东西,并随着越来越多的字符被输入逐渐过滤对象列表。

这与Solr一起工作得很好,可以达到某个特定的点。使用通配符星号在我的查询结束,因此IM扔了很多的请求像 P * PA * 疼痛* 漆*林

等在服务器和它的返回结果就好了(相当实际上非常快)。唯一的问题是,一旦用户键入整个单词,查询就是画笔*,此时solr返回0结果。

如此看来,查询+通配符只能查询+东西,而不是查询+什么

我设法在Lucene.Net这个工作,但心不是Solr的做事似乎以同样的方式。

任何意见,你可以给我实施这样的功能?

没有太多的代码看,因为IM使用SolrNet:http://pastebin.com/tXpe4YUe

我想,这事做与分析器和语法分析器,但即时通讯尚未到这一点的Solr知道去哪里看:)

回答

0

词根似乎是问题的根源。我使用text_ws的克隆来修复它,而不是该类型的文本。 我对scema.xml所做的更改:http://pastebin.com/xaJZDgY4

禁用茎干并启用小写索引。只要所有查询都是小写,他们应该总是给出结果(如果有的话)。

问题似乎是,分析仪不使用通配符工作,所以使用通配符时,将使约翰尼Johni或Johnni的结果的逻辑是“破”。

如果你面临的问题similiar和我的解决方案在这里犯规相当的工作,你可以添加debugQuery =到您的查询字符串,并多看一些关于怎么回事。这帮助我缩小了问题的范围。

2

我不会在Solr中实现带前缀通配符查询的建议。还有其他更适合做这件事的机制。请参阅:

+0

看起来interresting,但它似乎并没有做什么,我被采访。这里是架构即时通讯使用:http://pastebin.com/fF5Kisgd我想要的是那些部分或完全匹配的东西在“文字“,我要求。文本是数据库中给定行的所有字段的连续字符(使用视图) – mfriis 2011-01-20 16:11:25