经过多次谷歌搜索后,我决定在这里发布我的问题,希望有人帮助我。我想要实现的是执行如下查询:
q1: (adjective) "jumps" (preposition) // any adj followed by "jumps" followed by any prep.
q2: (adjective:brown) "jumps" (preposition) // brown as adj. followed by "jumps" followed by any prep.
q3: (adjective:brown) (verb:jumps) (preposition) // brown as adj followed by jumps as verb followed by any preposition.
以更一般的形式,我想要的是
(POS[:specific_word]) (POS[:specific_word]) (POS[:specific_word])
为此,我将文本标记如下:
the|[pos:DT][lemma:the] quick|[pos:JJ][lemma:quick] brown|[pos:JJ][lemma:brown] fox|[pos:NN][lemma:fox] jumps|[pos:NNS][lemma:jump] over|[pos:IN][lemma:over] the|[pos:DT][lemma:the] lazy|[pos:JJ][lemma:lazy] dog|[pos:NN][lemma:dog]
我想到的第一件事是将每个术语的额外信息索引为有效负载并在之后使用 PayloadNearQuery 以访问每个跨度的有效负载。问题是 PayloadNearQuery 首先匹配术语然后访问其有效负载,因此上述 3 个查询都不起作用。(如我错了请纠正我)
我想的第二件事是将额外信息作为该术语的同义词进行索引,但是这样一来,第二个查询将不起作用,因为我无法同时询问第一个术语是否是 adj 和特定单词“brown”。
任何解决此问题的方法、建议等将不胜感激。