用lucene进行词性搜索

时间:2015-02-22 20:21:23

标签: 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: (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而是具体的字#"布朗"同时进行。

任何解决此问题的方法,建议等都将受到赞赏。

0 个答案:

没有答案