1

私はSpringとHibernateのプロジェクトに取り組んでおり、Hibernate Lucene Searchを使用しています。それはうまく検索していますが、結果を表示している間は次のように表示されます(つまり、タイトルを検索した場合)

 [id: 10 | title:easylib, id: 11 | title:IBM, id: 12 | title:Wipro]

しかし、私が望んでいたのは、IDやその他のものではなく、「Wipro」のみを表示することです

これは私のコードです(タイトルのPOJOクラス内):

@Field(index = Index.YES, analyze = Analyze.YES, store = Store.YES)
@Column(name = "title", nullable = false, length = 150)
public String getTitle() {
    return this.title;
}

public void setTitle(String title) {
    this.title = title;
}

これは私のDAOクラスにあります

private void doIndex() throws InterruptedException {
            Session session = getSession();

            FullTextSession fullTextSession = Search.getFullTextSession(session);
            fullTextSession.createIndexer().startAndWait();

        }

       private List<CatalogueBase> searchTitle(String queryString) {
            Session session = getSession();
            FullTextSession fullTextSession = Search.getFullTextSession(session);       
            QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(CatalogueBase.class).get();
            org.apache.lucene.search.Query luceneQuery = queryBuilder.keyword().onFields("subTitle","publishedplace","title").matching(queryString).createQuery();   
            org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery, CatalogueBase.class);           
            List<CatalogueBase> contactList = fullTextQuery.list();
            return contactList;
        }

    @Override
    public List<CatalogueBase> getSearchDao(String search) throws InterruptedException {
        doIndex();
        List<CatalogueBase> result = searchTitle(search); 
        return result;
    }
4

3 に答える 3

1

私は答えを得ました、私の間違いは

前:

@Override
    public String toString() {
        StringBuilder stringBuilder = new StringBuilder("id: ").append(this.getId()).append(" | title:").append(this.getTitle());
        return stringBuilder.toString();
    }

後:

@Override
    public String toString() {
        StringBuilder stringBuilder = new StringBuilder().append(this.getTitle());
        return stringBuilder.toString();
    }
于 2013-08-09T04:33:10.117 に答える
0

クエリコードは、「表示」しているこの出力をレンダリングしていません。結果の でtoString()メソッドを呼び出しているだけかもしれませんList<CatalogueBase>。クエリから正しい結果が得られたと言うので、CatalogueBase インスタンスを変換するだけです。

CatalogBase インスタンスをロードする代わりに、プロジェクションを使用することもできます。

org.hibernate.Query fullTextQuery = fts.createFullTextQuery(luceneQuery, CatalogueBase.class);
fullTextQuery.setProjection("title");
List contactList = fullTextQuery.list();
于 2013-08-08T21:54:42.210 に答える