1

嘿伙计们,我正在尝试为正在编写的应用程序实现一些搜索功能。

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

为了搜索和与 Solr 通信,我创建了一个小测试 WCF 服务(稍后将与我们的主服务一起实现)。

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

这在一定程度上与 Solr 一起工作得很好。我在查询末尾使用通配符星号,因此我抛出了很多请求,例如 p* pa* pain* paint*

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

所以看起来query+wildcard只能是query+something而不是query+nothing

我设法让它在 Lucene.Net 下工作,但 Solr 并没有以它看起来的方式做事。

你可以给我关于实现这样一个功能的任何建议吗?

自从我使用 SolrNet 以来,没有太多代码可看:http: //pastebin.com/tXpe4YUe

我认为它与分析器和解析器有关,但我还没有进入 Solr 知道在哪里看:)

4

2 回答 2

2

我不会在 Solr 中实现带有前缀通配符查询的建议。还有其他更适合执行此操作的机制。看:

于 2011-01-20T15:55:24.027 回答
0

词干似乎是导致问题的原因。我使用 text_ws 的克隆而不是类型的文本来修复它。我对 scema.xml 的更改:http: //pastebin.com/xaJZDgY4

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

问题似乎是分析器不适用于通配符,因此使 Johnny 成为 Johni 或 Johnni 的结果的逻辑在使用通配符时被“破坏”。

如果您面临类似的问题并且我的解决方案在这里不起作用,您可以将 debugQuery=on 添加到您的查询字符串中,并查看更多关于发生了什么的信息。这帮助我缩小了问题的范围。

于 2011-01-21T07:49:07.753 回答