如果所有搜索关键字出现在任何搜索字段中的任何位置,我需要让基于 Solr 的搜索返回结果。
目前的情况:
示例搜索查询:keywords: "berlin house john" name: "berlin house john" name" author: "berlin house john" name"
假设只有一个结果,keywords="house"、name="berlin" 和 author="john",并且这三个词没有其他可能的排列。
如果 defaultOperator 是 OR,Solr 会返回每个字段中每个关键字的简单 OR-ing,这是一个巨大的列表,其中最好的匹配结果当然是在第一个位置,但接下来的结果几乎没有相关性(也许只有一个字段匹配),它们只会让用户感到困惑。
另一方面,如果我将默认运算符切换为 AND,我绝对不会得到任何结果。我想它是试图在所有三个领域中找到所有三个单词的完美匹配,这当然不存在。
搜索词从搜索输入进入应用程序,用户在其中编写自由文本 - 没有特定的语言约定(主题标签或其他东西)。
我知道我要问的问题是可能的,因为我以前用纯 Lucene 做过,而且效果很好。我究竟做错了什么?