0

我正在尝试编写一个 lucene 查询来检索我网站中的一些页面,所以我有以下内容:

string.Format("nodeName: ({0})^7 bodyText: ({0})^6", _searchTerm)

这意味着它将搜索包含变量的nodeNamebodyText包含_searchTerm变量的内容

我苦苦挣扎的地方是我也希望它不包含任何hideInNav设置了标志的结果,1所以我尝试了:

string.Format("nodeName: ({0})^7 bodyText: ({0})^6 +hideInNav: NOT(1)", _searchTerm)

但是,这会引发以下错误:

Encountered " <NOT> "NOT "" at line 1, column 140.
Was expecting one of:
   "(" ...
   "*" ...
   <QUOTED> ...
   <TERM> ...
   <PREFIXTERM> ...
   <WILDTERM> ...
   "[" ...
   "{" ...
   <NUMBER> ...

据我所知,查询(在 NOT 之后确实有一个,所以我很难知道这是在哪里

4

1 回答 1

0

试试这个查询:

string.Format("nodeName: ({0})^7 bodyText: ({0})^6 !hideInNav: (1)", _searchTerm)

感叹号也可以改为NOT:

string.Format("nodeName: ({0})^7 bodyText: ({0})^6 NOT hideInNav: (1)", _searchTerm)

有关Lucene 查询语法的概述,请参阅此页面(它不是当前版本,但我怀疑它改变了很多)

编辑:也许逆转你 hideInNave 语句将修复它:

string.Format("nodeName: ({0})^7 bodyText: ({0})^6 +hideInNav: (0)", _searchTerm) 检查是否为零或检查是否为零。

您可能还想下载Luke以检查索引的内容并查看值是如何保存的。

于 2013-02-20T15:49:21.757 回答