2

我一直在尝试进行 lucene 搜索查询,其中输入“Foo B”将返回“Foo Bar”、Foo Bear、Foo Build 等,但不会返回 ID 为“Foo”和单词“Bar”的记录在说它的“描述”字段。

我已经研究过 multiphrasequery 但它从不返回任何结果,下面是我一直在尝试的

        Term firstTerm = new Term("jobTitle", "Entry");
        Term secondTerm = new Term("jobTitle", "Artist");
        Term asdTerm = new Term(fld)

        Term[] tTerms = new Term[]{firstTerm, secondTerm};
        MultiPhraseQuery multiPhrasequery = new MultiPhraseQuery();
            multiPhrasequery.add( tTerms );

             org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery(multiPhrasequery, this.type).setSort(sort);
         results = hibQuery.list();
4

1 回答 1

0

我看到的可能问题是大写。 "Entry"并且"Artist"不会通过查询解析器传递,因此不会通过分析器运行,因此区分大小写。您正在索引的字段可能会使用包含 a 的分析器进行分析LowercaseFilter,因此结尾术语不会包含前导大写字母。在不知道如何为文档编制索引的情况下,我不能说这可以肯定地解决它,但这似乎是最有可能的。

修复后,您创建的查询应该与术语"entry""artist"jobTitle 字段中的任何内容匹配。

于 2013-08-06T15:29:11.750 回答