gpt4 book ai didi

java - 获取搜索结果 - lucene 4.4.0

转载 作者:行者123 更新时间:2023-12-02 06:50:02 25 4
gpt4 key购买 nike

我在 lucene 上遇到一些问题。我正在查询数据库。据我所知,索引没问题(我用 lukeall-4.4.0 检查过)。查询构造如下:

                Q = Query.split(" ");

booleanQuery = new BooleanQuery();

//Query[] Queryy = new Query[5 + 5 * Q.length];
Query[] Queryy = new Query[3 + 3*Q.length];

//USING THE ALL TEXT
Queryy[0] = new TermQuery(new Term("DESIGNACAO", Query));
Queryy[1] = new TermQuery(new Term("DESCRICAO", Query));
Queryy[2] = new TermQuery(new Term("TAG", Query));

//USING THE SEPARETED VALUES
for (int i = 3, j = 0; j < Q.length; i++, j++) {

Queryy[i] = new TermQuery(new Term("DESIGNACAO", Q[j]));
Queryy[++i] = new TermQuery(new Term("DESCRICAO", Q[j]));
Queryy[++i] = new TermQuery(new Term("TAG", Q[j]));

}

for (int i = 0; i < Queryy.length; i++) {
booleanQuery.add(Queryy[i], BooleanClause.Occur.MUST);
}

查询正常。为了搜索“not or”,查询(booleanQuery)如下:

 +DESIGNACAO:not or  +DESCRICAO:not or  +TAG:not or  +DESIGNACAO:not +DESCRICAO:not +TAG:not +DESIGNACAO:or +DESCRICAO:or +TAG:or

我正在使用 SimpleAnalyser,因此单词 not 和 or 不会被删除。问题是我无法获得点击。如果我使用 lukeall-4.4.0 进行搜索,而不是使用我的代码进行搜索,我只能获得点击。我的搜索方法如下:

IndexReader reader = IndexReader.open(directory1);
TopScoreDocCollector collector = TopScoreDocCollector.create(50, true);
searcher = new IndexSearcher(reader);
searcher.search(booleanQuery, collector);
hits = collector.topDocs().scoreDocs;
int total = collector.getTotalHits();
displayResults();

收集数据有什么问题吗?

亲切的问候

最佳答案

小菜一碟。问题出在查询的构造中:

for (int i = 0; i < Queryy.length; i++) {
booleanQuery.add(Queryy[i], BooleanClause.Occur.MUST);
}

BooleanClause.Occur.MUST 意味着它必须存在。因此,我添加到 boolean 查询的所有术语都必须存在(term1 AND term2 AND term3)。正确的是:

booleanQuery.add(Queryy[i], BooleanClause.Occur.SHOULD);

这样我就可以说必须存在我添加的术语之一(term1 OR term2 OR term3)。

亲切的问候

关于java - 获取搜索结果 - lucene 4.4.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com