0

I'm currently using Dojo's ComboBox for autocompletion in my project. The data for the ComboBox is provided via Solr, so it only contains what solr believes to the 10 closest matches. The ComboBox is getting incredibly confused when it comes to Middle Initials, so for example:

"Hill" will match "Adam Hill" "Adam" will match "Adam Hill", "Adam E Gray", etc.

But if I type "Adam E" or "Adam Gray", I get no matches back. My current queryExpr is:

*{0}*

and I can't figure out how to do partial matches around, any suggestions?

4

1 回答 1

0

首先回答你的最后一个问题......你不能。Solr 没有进行前导和尾随通配符搜索的功能。但是根据您的架构设置(如何生成单个术语)以及您查询索引的方式,您可能能够做一个不错的近似值。

我在这里做了很多假设,因为这个问题不能很好地描述你的设置。

假设:

  • 您正在查询的字段包含唯一值(这使我们能够进行简单的查询。否则,我们必须进行方面查询以返回更复杂的唯一值)
  • 您使用的 solr 版本支持 eDismax 查询解析器

架构:

为了将“Adam E”和“Adam Gray”与“Adam E Gray”匹配,您需要两个字段,比如 fullName(例如“Adam E Gray”)和 firstNameLastName(例如“Adam Gray”)这些字段都应该被索引并且无论您希望填充您的过滤选择框,都应该使用文本数据类型存储(即使用“solr.WhitespaceTokenizerFactory”标记器)。使用此标记器将允许“E Gray”匹配“Adam E Gray”

请求参数

q={!edismax qf='fullName firstNameLastName'}$name*&fl=fullName&rows=$count&start=$start 其中: - $name 是要匹配的字符串。它不必是完整的名称,但字符串必须以搜索词的开头开头。即“Adam E Gr”是可以的(星号允许尾随通配符搜索),“dam E Gray”不是。- $count 和 $rows 由您的 readStore 设置

于 2011-12-22T12:17:39.173 回答