我有一个Neo4j数据库,其中包含字典中的单词。如果使用不在字典中的单词(例如拼写错误的单词)进行查询,我希望查询只返回缺失的单词。
我可以做相反的事情。此查询返回正确拼写的数据库中的单词:
MATCH (w:Word)
WHERE w.spelling IN ["good","words","plus","twoo","that","are","mispleled"]
RETURN w.spelling AS word
我可以编写一个返回类似[" twoo","误解"]的查询?或者我是否必须使用上述查询,并在应用程序本身检查哪些单词尚未匹配?
答案 0 :(得分:2)
您可以在不OPTIONAL MATCH
的情况下执行此操作:
WITH ["good", "words", "plus", "twoo", "that", "are", "mispleled"] AS words
MATCH (word:Word) WHERE word.spelling IN words
WITH words, COLLECT(word.spelling) AS matched
RETURN [x IN words WHERE NOT x IN matched];
关于创建索引的建议仍然适用。
答案 1 :(得分:0)
[EDITED]
这可能适合你。 #navigation ul {
display: none;
list-style: none;
margin-left: 0;
padding-left: 0;
margin-bottom: 0;
margin-top: 20px;
z-index: 2;
}
#navigation ul.expanded {
display: block;
z-index: 2;
}
#navigation li {
display: block;
width: auto;
padding: 0;
z-index: 2;
}
#lang {
position: absolute;
top: 50px;
right: 5px;
z-index: 1;
}
是一个参数,其中包含您要检查的单词数组。
{input_words}
为提高效率,您应首先在UNWIND {input_words} AS in_word
OPTIONAL MATCH (w:Word { spelling: in_word })
RETURN REDUCE(s = [], x IN COLLECT({ w: w, in_word: in_word }) |
CASE WHEN x.w IS NULL THEN s + x.in_word ELSE s END) AS missing_word;
上创建一个索引:
:Word(spelling)