我目前正在使用Dojo的ComboBox在我的项目中自动完成。 ComboBox的数据是通过Solr提供的,因此它只包含solr认为的10个最接近的匹配项。 ComboBox在Middle Initials方面变得异常混乱,例如:
“希尔”将匹配“亚当希尔” “Adam”将匹配“Adam Hill”,“Adam E Gray”等等。
但如果我输入“Adam E”或“Adam Grey”,我就不会回来了。我当前的queryExpr是:
*{0}*
我无法弄清楚如何进行部分匹配,任何建议?
答案 0 :(得分:0)
首先回答你的上一个问题......你做不到。 Solr没有执行前导和尾随通配符搜索的功能。但是,根据您的架构设置(如何生成单个术语)以及您查询索引的方式,您可以做一个不错的近似。
我在这里做了很多假设,因为这个问题没有很好地描述你的设置。
<强>假设:强>
<强>架构:强>
为了将“Adam E”和“Adam Grey”与“Adam E Gray”匹配,您需要两个字段,例如fullName(例如“Adam E Gray”)和firstNameLastName(例如“Adam Grey”) 这些字段都应该被索引,并且您希望填充您的filteringSelectBox的任何一个应该以文本数据类型存储(即使用“solr.WhitespaceTokenizerFactory”标记器)。使用此标记器将允许“E Gray”匹配“Adam E Gray”
查询字符串
q = {!edismax qf ='fullName firstNameLastName'} $ name *&amp; fl = fullName&amp; rows = $ count&amp; start = $ start 哪里: - $ name是要匹配的字符串。它不必是完整的名称,但字符串必须以搜索词的开头开头。即“Adam E Gr”可以(星号允许尾随通配符搜索),“dam E Gray”不是。 - $ count和$ rows由readStore设置