如何在Lucene中搜索模式?

时间:2014-03-31 06:40:16

标签: regex search lucene wildcard

假设可能存在索引文档,其中包含“Facebook以19美元B收购WhatsApp”等短语。我想搜索“Facebook [\ s \ w +] * Whatsapp”,并希望所有包含Facebook和WhatsApp的短语用一个词分开(获取,购买等)。

如何在lucene中做到这一点?在50GB语料库中为数以千计的此类查询工作是否足够有效?

P.S。到目前为止,我已经使用RegexpQuery进行了正则表达式搜索,我无法使用多词短语。这是代码中的一行:

Term term = new Term("text", "Facebook[\\s\\w+]*Whatsapp");
Term t = new Term(userQuery);
Query query = new RegexpQuery(term);

1 个答案:

答案 0 :(得分:1)

您可以使用查询" Facebook Whatsapp"〜1,因此所有文档都将匹配此单词之间的距离将小于或等于1

有关详情,请访问http://wiki.apache.org/lucene-java/LuceneFAQ#Is_there_a_way_to_use_a_proximity_operator_.28like_near_or_within.29_with_Lucene.3Fhttp://searchhub.org//2009/07/18/the-spanquery/

UPD。

  

并确保你的文字" field是一个TextField,所以它是   标记化

- Jeff French