使用lucene进行词性搜索

使用lucene进行词性搜索,lucene,nlp,synonym,payload,part-of-speech,Lucene,Nlp,Synonym,Payload,Part Of Speech,经过多次谷歌搜索,我决定把我的问题贴在这里,希望有人能帮助我。我想要实现的是执行如下查询: 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: (a

经过多次谷歌搜索,我决定把我的问题贴在这里,希望有人能帮助我。我想要实现的是执行如下查询:

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.  
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]
更一般地说,我想要的是

(POS[:specific_word]) (POS[:specific_word]) (POS[:specific_word])  
为此,我将文本标记如下:

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.  
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”

任何解决此问题的方法、建议等都将不胜感激