Giter Club home page Giter Club logo

wukong's Issues

开启NotUsingSegmenter后,程序会panic

引擎初始化开启NotUsingSegmenter,运行程序会出现panic,比如用以下例子:

package main

import (
"github.com/huichen/wukong/engine"
"github.com/huichen/wukong/types"
"log"
)

var (
// searcher是线程安全的
searcher = engine.Engine{}
)

func main() {
// 初始化
searcher.Init(types.EngineInitOptions{
SegmenterDictionaries: "../../data/dictionary.txt",
NotUsingSegmenter: true,
})
defer searcher.Close()

// 将文档加入索引,docId 从1开始
searcher.IndexDocument(1, types.DocumentIndexData{Content: "此次百度收购将成**互联网最大并购"}, false)
searcher.IndexDocument(2, types.DocumentIndexData{Content: "百度宣布拟全资收购91无线业务"}, false)
searcher.IndexDocument(3, types.DocumentIndexData{Content: "百度是**最大的搜索引擎"}, false)

// 等待索引刷新完毕
searcher.FlushIndex()

// 搜索输出格式见types.SearchResponse结构体
log.Print(searcher.Search(types.SearchRequest{Text: "中"}))

}

这个段程序无法执行。

索引能不能不仅索引id,还能获取其它一些简单数据

比如:索引查询之后 能够返回文章的标题,作者等信息(不需要查找数据库),水平拆库拆表 极限情况 是 30条数据 要 有 30次socket连接(因为对应30个不同的数据库),这样查询 列表可以 直接从索引查到,而不是 仅仅只能获取id,再从数据库取数据

wukong/testdata/crawl_weibo_data.go 无法构建运行

wukong/testdata/crawl_weibo_data.go **使用的两个包不存在项目中
import ( "flag" "fmt" "github.com/huichen/gobo" "github.com/huichen/gobo/contrib" "io/ioutil" "log" "os" "strings" "time" )

以下两个包不存在 项目工程中
"github.com/huichen/gobo" "github.com/huichen/gobo/contrib"

在某种情况下出现panic错误

您好,我使用了您的悟空搜索,线上稳定了运行了3个月左右,用于对于商品信息的搜索,但是昨天出现了严重的panic错误,导致程序奔溃了,panic错误如下:
2016/07/24 15:49:09 载入sego词典 data/dictionary.txt
panic: runtime error: index out of range

goroutine 1674871 [running]:
panic(0x9bccc0, 0xc82000a040)
/usr/local/go/src/runtime/panic.go:464 +0x3e6
github.com/huichen/wukong/engine.(_Engine).rankerRankWorker(0xf737e0, 0x1)
/opt/go/src/github.com/huichen/wukong/engine/ranker_worker.go:37 +0x24c
created by github.com/huichen/wukong/engine.(_Engine).Init
/opt/go/src/github.com/huichen/wukong/engine/engine.go:158 +0xeab
希望您帮忙解决下,注:sego词典我用的是空词典

请问如何做range查询,类似日期范围

请问如何做range查询,主要是数字的range查询
还有关于索引的持久化,现在的索引是放在内存的,重启后就需要重建,如果文本量比较大的话,这个就比较麻烦。。

关于demo占用大量内存的疑问

windows下跑了demo,内存占到近540M,整个weibo_data不到2M,为什么占这么多内存?

做大数据方面的应用,java跑8G都可以,go程序内存太大的话有没有问题?

请问,搜索的结果能不能带一些文档的属性?

请问,搜索得到的结果能不能带一些文档的属性。

例如搜索得到的结果包括文档的创建人,创建时间,所属栏目等属性。
我是用数据库的某条记录作索引,返回的结果想带上这条记录的属性。

timeout的bug

// 设置超时
		deadline := time.Now().Add(time.Nanosecond * time.Duration(NumNanosecondsInAMillisecond*request.Timeout))
		for shard := 0; shard < engine.initOptions.NumShards; shard++ {
			select {
			case rankerOutput := <-rankerReturnChannel:
				if !request.CountDocsOnly {
					for _, doc := range rankerOutput.docs {
						rankOutput = append(rankOutput, doc)
					}
				}
				numDocs += rankerOutput.numDocs
			case <-time.After(deadline.Sub(time.Now())):
				isTimeout = true
				break
			}
		}

如果设置了超时,而且确实是超时了,那么进入 下面那条case了,那么原来的rankerReturnChannel要返回的rankerOut就无法正常返回了,阻塞了,而且会影响下次search的结果会返回上次是结果

搜索添加的id大小有限制么 uint64 但是添加id为636160451050209280的数据的时候报错

panic: runtime error: index out of range

goroutine 52 [running]:
encoding/binary.PutUvarint(0xc20811a0b8, 0x8, 0x8, 0x8d4188f49000000, 0x8)
    /usr/local/go/src/encoding/binary/varint.go:48 +0x70
github.com/huichen/wukong/engine.(*Engine).persistentStorageIndexDocumentWorker(0x4640c40, 0x2)
    /Users/sunlei/go/src/github.com/huichen/wukong/engine/persistent_storage_worker.go:24 +0x140
created by github.com/huichen/wukong/engine.(*Engine).Init
    /Users/sunlei/go/src/github.com/huichen/wukong/engine/engine.go:199 +0x1652

第一条搜索结果被吃掉了

最近的改动导致搜索的第一条结果被吃掉了。即使我设置RankOptions.OutputOffset:0; 如果去掉OutputOffset, 那么第一条显示出来了,第二条丢了。
这怎么办呢?

想让检索结果以时间降序排列,怎么做呢?

原文档的结构类似如下:
type Doc struct{
CreateTime time.Time
Content string
}
使文档的Content作为索引,最后进行搜索,如何让结果以 CreateTime时间降序排列,而不是使用Scores进行排序?
先谢了!

关于testdata问题

感觉这么大一个文件放在git里面 把版本库撑得很大 是否考虑重新开一个项目来存放测试相关的数据呢?

紧邻距离(Token Proximity)是什么?

请教一下,这个术语,是本项目专门发明的,还是搜索引擎已有的一个概念?

我搜索“紧邻距离”或"Token Proximity",都没有找到相关解释,在 wikipedia上搜索 Token Proximity ,也没搜到,感觉这个术语是您发明的?

是不是还不支持Go 1.8?

我就用最简单的范例
加入这一句 searcher = engine.Engine{} ,程序虽然能build,但一运行就退出,显示 Killed: 9 ,没有更多信息。

把这句删掉就正常。

go version go1.8 darwin/amd64

如何实现高词频搜索

目前项目要实现自动选择正确名称的功能,但不需要全文检索。
假如数据库中有如下数据:

深圳市百度中学
深圳市谷歌小学
深圳市实验小学
深圳市实验小学
深圳市实验小学
深圳市实验小学
深圳市实验小学
深圳市实验 小学
深圳市百度中学

根据词频挖掘:
当输入“深圳市”的时候,出现词频最高的

深圳市实验小学
深圳市百度中学

股票代码分词不了

比如万科A的股票代码000002, 放到词典中,分词情况如下:
1、000002前后是中文或空格,比如"万科000002将于...",这时可以分词成功;
2、000002前后是英文,比如“new000002abc”,这时分词不了了
是不是哪里有配置呢?

貌似README.md中的例子出错

➜  server git:(master) ✗ go build wukong.go
# github.com/cznic/fileutil
/Users/leeight/hd/local/leeight.github.com/gopath/src/github.com/cznic/fileutil/fileutil_solaris.go:14: PunchHole redeclared in this block
        previous declaration at /Users/leeight/hd/local/leeight.github.com/gopath/src/github.com/cznic/fileutil/fileutil_darwin.go:14
/Users/leeight/hd/local/leeight.github.com/gopath/src/github.com/cznic/fileutil/fileutil_solaris.go:20: Fadvise redeclared in this block
        previous declaration at /Users/leeight/hd/local/leeight.github.com/gopath/src/github.com/cznic/fileutil/fileutil_darwin.go:20
/Users/leeight/hd/local/leeight.github.com/gopath/src/github.com/cznic/fileutil/fileutil_solaris.go:25: IsEOF redeclared in this block
        previous declaration at /Users/leeight/hd/local/leeight.github.com/gopath/src/github.com/cznic/fileutil/fileutil_darwin.go:25

请教如何支持拼音搜索功能

例如应用中需要对电影进行搜索,索引了“龙门镖局”,但是希望用户搜索long、longmen、lmbj也能得到相应“龙门镖局”的结果。

我想到的方案是先得到“龙门镖局”的分词,再计算所有分词的拼音,做为labels增加到索引中。

不知道我的方案是否正确,或者有其他方案实现。

持久存储模式下的索引添加导致的搜索结果疑惑

索引数据量非常大,内存放不下,所以用了持久存储,而持久存储在每次添加索引后的searcher.FlushIndex()动作是全局更新磁盘上的索引数据,还是增量添加?

为何有时候添加完后,前后同样的关键词,前一次搜索有结果,后一次搜索没结果?

评分规则必须要在建索引的时候指定么?

评论规则必须是在建索引的时候指定么?
评分规则�如果可以在search的时候进行指定的话,查询会更灵活吧?因为有时候在查询的时候,需要针对不同的filed进行排序获取最后的结果

捐赠帐号描述建议

建议将...feedback.md中的"...捐赠,我的淘宝/paypal/wallet账号...",其中的“淘宝”换为“支付宝”。

关于labels的使用

你好,我在使用时发现如果建立索引时不加labels,可以成功搜索到所有满足条件的记录,但是如果索引时加上labels,且不同文档之间有相同labels时(文档中也包含了labels关键字),搜索该label关键字会遗漏很多记录,每次必现,微博那个demo加上labler后测试也有这个情况,似乎是个bug

编译报错。

github.com/cznic/zappy

:0: sorry, unimplemented: 64-bit mode not compiled in
FAIL github.com/cznic/zappy [build failed]

go小白求教

NumShards的大小会影响搜索结果

我觉得这个是架构设计的问题,因为不同shard之间,数据不同,多个关键词同时匹配时,只是在当前shard中查找,因此,shard数会不同,检索的结果也会不同。
那么,是不是应该把shard当中分类搜索功能呢?

我想了解wukong背后设计流程

如题:
很想知道wukong的处理流程,整体设计,及文档建立索引是怎么回事;怎么讲倒排索引在硬盘上存储更小,查询更快

搜索关键词比文档多就找不到?

试了下,如果搜索关键词有任一一个在文档中找不到,该文档就不会被纳入搜索结果中。是不是可以加个选项,关键词可以选择按照【并且】(现在的),以及【或者】来搜索。即任何一个关键词在文档中出现就算搜到

缩小 git repo 的体积

TL;DR:

同样的代码,但是 clone 的时候体积更小,可以访问 https://github.com/zhuangya/wukong.git

我会尽量保持和 upstream 同步


如同在 codelab 里写的一样,在 git 中去掉了 weibo_data.txt 来让代码在 clone 的时候体积更小,但是不错从 git 历史中把它去掉是没有太大改善的。

所以我做了一些这方面的是工作,包括:

  • 在整个 git 历史中,去掉了 weibo_data.txt
  • 在整个 git 历史中,去掉了 data/ 目录,取而代之的是将它以 submodule 的形式引入到代码库中
  • 更新了 codelab 中 weibo_data.txt 的地址。
  • 创建了一个新的用来存放这些体积很大又不会有经常改变的文件的 git repo:wukong-data

由于更改了整个 git 的历史,所以没有共同的 tree-ish parent 也就没有办法发 pull-request 了。

@huichen 如果你希望让wukong的代码库 clone 起来体积更小,可以来看一下我这边做的相关的事情 😄

相关的 links

https://help.github.com/articles/remove-sensitive-data/
http://rtyley.github.io/bfg-repo-cleaner/
https://git-lfs.github.com/

太棒了!

wukong实在是太好了,精华中的精华,感谢huichen!

载入索引文件太慢

我使用Wukong索引了数据库的一个字段并且将索引的文件存储在本地,然后在搜索阶段载入文件,但是载入相当慢。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.