有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Lucene中索引正则表达式并搜索输入

我已经在Lucene中为正则表达式编制了索引,是否有可能生成Lucene查询来使用标准Analyzer在索引正则表达式上搜索我的给定输入

org.apache.lucene.search.Query luceneQuery50=queryBuilder4.keyword().wildcard().onField("RegularExpression").matching("9876654").createQuery();

字段“RegularExpression”存储为字符串对象

编辑

Hibernate搜索与注释一起使用:

@Indexed public class NumbersTbl { @Field public String RegularExpression; }

共 (1) 个答案

  1. # 1 楼答案

    如果搜索数字,请确保在创建Field时,将其指定为Field.Index.NOT_ANALYZED,否则,在索引之前,分析器将删除数字

    编辑

    有关更多详细信息,请参阅此答案Find regular expression match using Lucene?

    EDIT2

    您可以在@Field注释中指定不希望对字段进行分析。这将保留索引字段“原样”的内容。默认值为Analyze.YES。咨询docs

    @Field(index=Index.YES, analyze=Analyze.NO)
    

    另外,由于使用Hibernate搜索,您可能希望将Lucene查询包装到Hibernate查询中,请参见getting started guide。可能您已经这样做了,但无法从您发布的代码中分辨出来。如果你想得到有用的答案,一般来说,我建议你发布更多的代码。如果你仔细想想,很难从一行代码中分辨出哪里出了问题