或者我误解了这门课的用法。看看下面的代码..。(它在Scala中,但是应该很容易掌握这个想法)
import org.apache.lucene.store._
import org.apache.lucene.document._
import org.apache.lucene.index._
import org.apache.lucene.analysis.core._
import org.apache.lucene.search._
val directory = new RAMDirectory()
val config = new IndexWriterConfig(new WhitespaceAnalyzer())
val writer = new IndexWriter(directory, config)
writer.addDocument({
val document = new Document()
document.add(new StringField("foo", "bar", Field.Store.YES))
document
})
writer.commit()
val searcher = new IndexSearcher(DirectoryReader.open(directory))
{
val query = new ConstantScoreQuery(new FieldValueQuery("foo"))
Console.println(searcher.search(query, 1).totalHits)
}
{
val query = new TermQuery(new Term("foo", "bar"))
Console.println(searcher.search(query, 1).totalHits)
}输出是,
[info] 0
[info] 1是窃听器还是我漏掉了什么?(我正在使用Lucene 5.4.1)
发布于 2016-01-29 22:06:09
FieldValueQuery检查该字段是否存在DocValue,而不是传统的索引/存储字段内容。如果将DocValuesField添加到文档中,应该会看到它获得查询的结果,如:
val document = new Document()
document.add(new StringField("foo", "bar", Field.Store.YES))
document.add(new SortedDocValuesField("foo", new BytesRef("bar"))
document查看DocValues API和这篇博文介绍了他们,了解关于DocValues的一些信息。
https://stackoverflow.com/questions/35093064
复制相似问题