func TestKeywordSearch(t *testing.T) { d, err := store.OpenFSDirectory("testdata/belfrysample") if err != nil { t.Error(err) } r, err := index.OpenDirectoryReader(d) if err != nil { t.Error(err) } if r == nil { t.Error("DirectoryReader cannot be opened.") } if len(r.Leaves()) < 1 { t.Error("Should have one leaf.") } ss := NewIndexSearcher(r) docs, err := ss.SearchTop(NewTermQuery(index.NewTerm("content", "bat")), 10) if err != nil { t.Error(err) } assertEquals(t, 8, docs.TotalHits) doc, err := r.Document(docs.ScoreDocs[0].Doc) if err != nil { t.Error(err) } assertEquals(t, "Bat recycling", doc.Get("title")) }
func main() { log.Print("Oepning FSDirectory...") // path := "src/github.com/balzaczyy/golucene/search/testdata/win8/belfrysample" path := "core/search/testdata/win8/belfrysample" // path := "/private/tmp/kc/index/belfrysample" // path := "c:/tmp/kc/index/belfrysample" d, err := store.OpenFSDirectory(path) if err != nil { panic(err) } log.Print("Opening DirectoryReader...") r, err := index.OpenDirectoryReader(d) if err != nil { panic(err) } if r == nil { panic("DirectoryReader cannot be opened.") } if len(r.Leaves()) < 1 { panic("Should have one leaf.") } log.Print("Initializing IndexSearcher...") ss := search.NewIndexSearcher(r) log.Print("Searching...") docs, err := ss.SearchTop(search.NewTermQuery(index.NewTerm("content", "bat")), 10) if err != nil { panic(err) } log.Println("Hits:", docs.TotalHits) doc, err := r.Document(docs.ScoreDocs[0].Doc) if err != nil { panic(err) } log.Println("Hit 1's title: ", doc.Get("title")) }
func main() { util.SetDefaultInfoStream(util.NewPrintStreamInfoStream(os.Stdout)) index.DefaultSimilarity = func() index.Similarity { return search.NewDefaultSimilarity() } directory, _ := store.OpenFSDirectory("test_index") analyzer := std.NewStandardAnalyzer() conf := index.NewIndexWriterConfig(util.VERSION_LATEST, analyzer) writer, _ := index.NewIndexWriter(directory, conf) d := document.NewDocument() d.Add(document.NewTextFieldFromString("foo", "bar", document.STORE_YES)) writer.AddDocument(d.Fields()) writer.Close() // ensure index is written reader, _ := index.OpenDirectoryReader(directory) searcher := search.NewIndexSearcher(reader) q := search.NewTermQuery(index.NewTerm("foo", "bar")) res, _ := searcher.Search(q, nil, 1000) fmt.Printf("Found %v hit(s).\n", res.TotalHits) for _, hit := range res.ScoreDocs { fmt.Printf("Doc %v score: %v\n", hit.Doc, hit.Score) doc, _ := reader.Document(hit.Doc) fmt.Printf("foo -> %v\n", doc.Get("foo")) } }
func TestInitTerm(t *testing.T) { path := "../search/testdata/win8/belfrysample" d, err := store.OpenFSDirectory(path) if err != nil { t.Error(err) } r, err := OpenDirectoryReader(d) if err != nil { t.Error(err) } leaves := r.Context().Leaves() if len(leaves) != 1 { t.Error("Should have one leaf.") } ctx := leaves[0] fields := ctx.reader.Fields() terms := fields.Terms("content") termsEnum := terms.Iterator(nil) if len(termsEnum.Term()) != 0 { t.Error("Initial term should has zero length.") } ok, err := termsEnum.SeekExact(NewTerm("content", "bat").Bytes) if err != nil { t.Error(err) } if !ok { t.Error("SeekExact should return true.") } }
func TestLastCommitGeneration(t *testing.T) { d, err := store.OpenFSDirectory("../search/testdata/belfrysample") if err != nil { t.Error(err) } files, err := d.ListAll() if err != nil { t.Error(err) } if files != nil { genA := LastCommitGeneration(files) assertEquals(t, int64(1), genA) } }
func TestLastCommitGeneration(t *testing.T) { d, err := store.OpenFSDirectory("testdata/belfrysample") if err != nil { t.Error(err) } files, err := d.ListAll() if err != nil { t.Error(err) } if files != nil { genA := index.LastCommitGeneration(files) if genA != 1 { t.Error("Should be 1, but was %v", genA) } } }
func TestReadFieldInfos(t *testing.T) { path := "../../search/testdata/osx/belfrysample" d, err := store.OpenFSDirectory(path) if err != nil { t.Error(err) } ctx := store.NewIOContextBool(false) cd, err := store.NewCompoundFileDirectory(d, "_0.cfs", ctx, false) if err != nil { t.Error(err) } fis, err := Lucene42FieldInfosReader(cd, "_0", "", store.IO_CONTEXT_READONCE) if err != nil { t.Error(err) } if !fis.HasNorms || fis.HasDocValues { t.Errorf("hasNorms must be true and hasDocValues must be false, but found %v", fis) } }
func TestLeaves(t *testing.T) { path := "../search/testdata/win8/belfrysample" d, err := store.OpenFSDirectory(path) if err != nil { t.Error(err) } r, err := OpenDirectoryReader(d) if err != nil { t.Error(err) } if len(r.Leaves()) != 1 { t.Error("Should have one sub reader.") } fmt.Println(r) r2 := r.Context().Reader() fmt.Println(r2) if len(r2.Leaves()) != 1 { t.Error("Should have one sub reader.") } }
func TestBasicIndexAndSearch(t *testing.T) { q := search.NewTermQuery(index.NewTerm("foo", "bar")) q.SetBoost(-42) os.RemoveAll(".gltest") directory, err := store.OpenFSDirectory(".gltest") It(t).Should("has no error: %v", err).Assert(err == nil) It(t).Should("has valid directory").Assert(directory != nil) fmt.Println("Directory", directory) defer directory.Close() analyzer := std.NewStandardAnalyzer() conf := index.NewIndexWriterConfig(util.VERSION_LATEST, analyzer) writer, err := index.NewIndexWriter(directory, conf) It(t).Should("has no error: %v", err).Assert(err == nil) d := docu.NewDocument() d.Add(docu.NewTextFieldFromString("foo", "bar", docu.STORE_YES)) err = writer.AddDocument(d.Fields()) It(t).Should("has no error: %v", err).Assert(err == nil) err = writer.Close() // ensure index is written It(t).Should("has no error: %v", err).Assert(err == nil) reader, err := index.OpenDirectoryReader(directory) It(t).Should("has no error: %v", err).Assert(err == nil) defer reader.Close() searcher := search.NewIndexSearcher(reader) res, err := searcher.Search(q, nil, 1000) It(t).Should("has no error: %v", err).Assert(err == nil) hits := res.ScoreDocs It(t).Should("expect 1 hits, but %v only.", len(hits)).Assert(len(hits) == 1) It(t).Should("expect score to be negative (got %v)", hits[0].Score).Verify(hits[0].Score < 0) explain, err := searcher.Explain(q, hits[0].Doc) It(t).Should("has no error: %v", err).Assert(err == nil) It(t).Should("score doesn't match explanation (%v vs %v)", hits[0].Score, explain.Value()).Verify(isSimilar(hits[0].Score, explain.Value(), 0.001)) It(t).Should("explain doesn't think doc is a match").Verify(explain.IsMatch()) }