我在 Umbraco 中使用 Examine 来查询内容节点的 Lucene 索引。我有一个字段“completeNodeText”,它是所有节点属性的串联(为了保持简单而不是跨多个字段搜索)。
我接受用户提交的搜索词。当搜索词是多个词(即“firstterm secondterm”)时,我希望得到的查询是 OR 查询:让我返回 fullNodeText 是 firstterm OR secondterm 的结果。
我想:
{+completeNodeText:"firstterm ? secondterm"}
但相反,我得到:
{+completeNodeText:"firstterm secondterm"}
如果我搜索“firstterm OR secondterm”而不是“firstterm secondterm”,那么生成的查询是正确的:{+completeNodeText:"firstterm ? secondterm"}
我正在使用以下 API 调用:
var searcher = ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"];
var searchCriteria = searcher.CreateSearchCriteria();
var query = searchCriteria.Field("completeNodeText", term).Compile();
有没有一种简单的方法可以强制检查生成这个“或”查询?或者我是否必须通过调用 StandardAnalyzer 来标记用户输入并通过遍历标记将查询连接在一起来手动构造原始查询?并绕过整个 Examine fluent 查询 API?