我使用lucene版本3.0.3.0,但我搜索的一些表达式无法正常工作.例如,如果我在"模型"字段上搜索"!Fiesta OR Astra",则仅返回"vauxhallAstra"并且不返回"fordFocus".我的代码如下:
var fordFiesta = new Document();
fordFiesta.Add(new Field("Id", "1", Field.Store.YES, Field.Index.NOT_ANALYZED));
fordFiesta.Add(new Field("Make", "Ford", Field.Store.YES, Field.Index.ANALYZED));
fordFiesta.Add(new Field("Model", "Fiesta", Field.Store.YES, Field.Index.ANALYZED));
var fordFocus = new Document();
fordFocus.Add(new Field("Id", "2", Field.Store.YES, Field.Index.NOT_ANALYZED));
fordFocus.Add(new Field("Make", "Ford", Field.Store.YES, Field.Index.ANALYZED));
fordFocus.Add(new Field("Model", "Focus", Field.Store.YES, Field.Index.ANALYZED));
var vauxhallAstra = new Document();
vauxhallAstra.Add(new Field("Id", "3", Field.Store.YES, Field.Index.NOT_ANALYZED));
vauxhallAstra.Add(new Field("Make", "Vauxhall", Field.Store.YES, Field.Index.ANALYZED));
vauxhallAstra.Add(new Field("Model", "Astra", Field.Store.YES, Field.Index.ANALYZED));
Directory directory = FSDirectory.Open(new DirectoryInfo(Environment.CurrentDirectory + "\\LuceneIndex"));
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
var writer = new IndexWriter(directory, …Run Code Online (Sandbox Code Playgroud) embeddable是一个返回布尔值的自定义LESS PHP函数.
当布尔函数返回true时,我可以使用LESS(lessphp)保护执行某些操作:
.my-mixin(@url) when(embeddable(@url)) {
background-color: #abc;
}
.smallClass {
.my-mixin('small.png');
}
Run Code Online (Sandbox Code Playgroud)
它产生:
.smallClass {
background-color: #abc;
}
Run Code Online (Sandbox Code Playgroud)
正如所料.
我怎么做时,是不是真的(非运营商).显而易见的:
.my-mixin(@url) when(embeddable(@url)) {
background-color: #abc;
}
.my-mixin(@url) when(not(embeddable(@url))) {
background-color: #389;
}
.bigClass {
.my-mixin('big.png');
}
Run Code Online (Sandbox Code Playgroud)
静静地丢弃,以及使用它的块.注意,我保留了守卫的真实版本,所以如果谓词错误,应该使用真正的版本.然后我尝试了:
.my-mixin(@url) when(!embeddable(@url)) {
background-color: #389;
}
Run Code Online (Sandbox Code Playgroud)
取代不是版本.
mixin只是保存在CSS中(而不是编译),并且尝试使用它的bigClass块仍然会被静默删除.
与:相同:
.my-mixin(@url) when(embeddable(@url) != true) {
background-color: #389;
}
Run Code Online (Sandbox Code Playgroud) 考虑以下代码:
class Truth
{
public:
Truth(bool val) : value(val) {}
bool operator!() {std::cout<<"operator!()"<<std::endl; return !value;}
operator bool() {std::cout<<"operator bool()"<<std::endl; return value;}
private:
bool value;
};
int main()
{
Truth t(true);
if(!t)
std::cout<<"t is false"<<std::endl;
else
std::cout<<"t is true"<<std::endl;
if(!!t)
std::cout<<"t is false"<<std::endl;
else
std::cout<<"t is true"<<std::endl;
if(t)
std::cout<<"t is false"<<std::endl;
else
std::cout<<"t is true"<<std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在语句if(!t)和if(!!t)重载的operator!()实现中被调用,而(并不奇怪)在语句if(t)中重载的operator bool()实现被调用。
但是,如果operator!()实现被注释掉,则在所有 3 个语句中operator bool()都会被调用。
我理解“为什么”会发生这种情况,但我担心的是,重载逻辑 NOT 运算符 …
我在 MySQL 中运行以下查询:
SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';
Run Code Online (Sandbox Code Playgroud)
它返回了我完全正确的预期结果。
之后我运行以下查询:
SELECT * FROM Customers
WHERE NOT (Country='Germany' AND Country='USA');
Run Code Online (Sandbox Code Playgroud)
这次它返回了表中存在的所有记录SELECT * FROM Customers;(查询的结果集)
我不明白为什么 NOT 运算符在第二个带括号的查询中不起作用?
您可以访问此链接并检查:
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_where_not_and
Run Code Online (Sandbox Code Playgroud) 刚刚发现两种语法都有效.
哪个更有效率?
element not in list
Run Code Online (Sandbox Code Playgroud)
要么:
not element in list
Run Code Online (Sandbox Code Playgroud)
?
boolean flag = false;
if(!flag) System.out.println(!flag); // prints true
Run Code Online (Sandbox Code Playgroud)
我想知道为什么!flag被认为是false一个条件参数传递给if statement和true其他地方一样?
可能重复:
C++代码中的双重否定
在阅读我读到的一个代码时:
flush = ! !(flags & GST_SEEK_FLAG_FLUSH);
Run Code Online (Sandbox Code Playgroud)
我没有得到!!这里的意思.这句话怎么办?
编辑:
我得到了它的双重否定.将非bool数据转换为bool的技巧
但那有什么需要呢?这里冲洗是bool然后如果你将任何非零项目分配给bool它会将1和零项目视为0,所以这样做有什么好处?
我只是在失明,还是这种if说法真的不符合它的意图?
Dim textSample as String = "F"
If Not textSample = "D" Or Not textSample = "E" Or Not textSample = "F" Then
MessageBox.Show("False")
End If
Run Code Online (Sandbox Code Playgroud)
即使textSample是其中一个字母,也会显示消息框.在我看来,该if语句应该看到textSample是其中一个字母并跳过它,而如果它是Z,它将"Not"等于其中任何一个并因此显示消息框.
为什么它会进入if声明?
我试图使用列表推导来从列表中删除一些项目,只需保留未指定的项目.
例如,如果我有2个列表,a = [1,3,5,7,10]并且b = [2,4]我希望保留所有项目a不在与数字相对应的索引中b.
现在,我尝试使用,y = [a[x] for x not in b]但这会产生一个SyntaxError.
y = [a[x] for x in b] 工作正常,并保持我想要删除的元素.
那我该怎么做呢?另外,这是一个很好的方法,或者我应该使用del?
我在下面的 C 代码中对 long double 变量应用了 not 运算符:
#include <stdio.h>
int main()
{
long double a;
signed char b;
int arr[sizeof(!a+b)];
printf("\n%d",sizeof(arr));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码输出 16。我无法理解当我们在 long double 上应用 not 运算符时会发生什么,就像我们对a.
请帮助我了解这段代码发生了什么。
谢谢你!
!在这个条件中使用not运算符()给了我:
"未捕获的SyntaxError:意外的令牌!"
if (text.includes(input[j])) {
$(Messages[i]).hide();
}
else if !(text.includes(input[j])) {
$(Messages[i]).show();
}
Run Code Online (Sandbox Code Playgroud)
为什么不在!这里工作?
我有一个简单的逻辑,如果if语句返回无效的语法错误。该语句是:
if (a[1] != None and a[2] != None and !(a[3] == None and a[4] == None)):
Run Code Online (Sandbox Code Playgroud)
无效的语法是第三个!操作员。有什么原因为什么这行不通?在这种情况下是否应该使用其他运算符?
因此,逻辑本质上是:(a[1] ^ a[2] ^ (a[3] v a[4])其中这些表示具有值)。因此,不获取任何None值的反向逻辑是:
!a[1] ^ !a[2] ^ !(a[3] ^ a[4])
Run Code Online (Sandbox Code Playgroud)
我很确定自己的逻辑数学是正确的,那么如何获得所需的结果?
*背景信息:Python 2.7.10,总体代码是将数据从SQL Server 2008表中提取出来,进行处理,然后将其插入不允许NULL值的另一个表中,而原始表则乱七八糟
谢谢你的帮助!
not-operator ×12
if-statement ×3
python ×3
c ×2
brackets ×1
c++ ×1
contains ×1
css ×1
equation ×1
guard ×1
in-operator ×1
java ×1
javascript ×1
less ×1
list ×1
logic ×1
long-double ×1
lucene ×1
mysql ×1
sequence ×1
sizeof ×1
sql ×1
vb.net ×1