【发布时间】:2016-05-25 08:46:23
【问题描述】:
我已经设置了 Solr 5.1.0,并从 MYSQL 数据库导入了正确的数据。效果很好。
但我只想要完全匹配的结果或与之相关的结果。
喜欢,
Dancers in Mumbai
它给出了包含“dancers + mumbai”和只有“dancers”+只有“mumbai”关键字的所有结果。我想要的结果必须只包含“舞者 + 孟买”而不是其他人。
【问题讨论】:
我已经设置了 Solr 5.1.0,并从 MYSQL 数据库导入了正确的数据。效果很好。
但我只想要完全匹配的结果或与之相关的结果。
喜欢,
Dancers in Mumbai
它给出了包含“dancers + mumbai”和只有“dancers”+只有“mumbai”关键字的所有结果。我想要的结果必须只包含“舞者 + 孟买”而不是其他人。
【问题讨论】:
这不是一个完整的答案,但这是我试图解决类似问题的方向。非常欢迎评论。
第 1 步: 实现多个 Solr 核心,核心 1 是“工作”(舞者/律师/等),核心 2 是“城市”(孟买/钦奈/等)。
第 2 步: 查询每个核心的精确匹配,因此在相关字段上实现 KeywordTokenizerFactory 以仅查找精确匹配。这将为您提供跨核心的所有匹配项(例如,工作:舞者和城市:孟买)。
第 3 步: 使用 EDisMax 执行一般查询以进行用户友好的搜索(例如,在多个字段中搜索“dancers in mumbai”),并使用 boost 字段来提升在先前查询中找到的工作/城市。
我很想知道是否有更好的方法来做如此复杂的事情,但我还没有找到。希望对您有所帮助。
【讨论】:
使用必需的术语,例如:+dancers +mumbia
或短语查询:“dancers in mumbia”
会工作的。
您还可以将查询的默认运算符设置为“AND”using the q.op parameter。
【讨论】: