Comments (3)
Index addition and deletion operations are thread safe.
from riot.
seems like i can directly call
Index(id, types.DocData{Content: text,},forceUpdate)
to update a doc,
a exists doc's docState=0, after call
Index()
it marks docState to 1, once you call
Flush()
it will call
AddDocToCache(forceUpdate=true)
and call
RemoveDocToCache(forceUpdate=true)
if indexer.addCacheLock.addCachePointer >= indexer.initOptions.DocCacheSize ||
forceUpdate {
indexer.tableLock.Lock()
position := 0
for i := 0; i < indexer.addCacheLock.addCachePointer; i++ {
docIndex := indexer.addCacheLock.addCache[i]
docState, ok := indexer.tableLock.docsState[docIndex.DocId]
if ok && docState <= 1 {
// ok && docState == 0 表示存在于索引中,需先删除再添加
// ok && docState == 1 表示不一定存在于索引中,等待删除,需先删除再添加
if position != i {
indexer.addCacheLock.addCache[position], indexer.addCacheLock.addCache[i] =
indexer.addCacheLock.addCache[i], indexer.addCacheLock.addCache[position]
}
if docState == 0 {
indexer.removeCacheLock.Lock()
indexer.removeCacheLock.removeCache[indexer.removeCacheLock.removeCachePointer] =
docIndex.DocId
indexer.removeCacheLock.removeCachePointer++
indexer.removeCacheLock.Unlock()
indexer.tableLock.docsState[docIndex.DocId] = 1
indexer.numDocs--
}
position++
} else if !ok {
indexer.tableLock.docsState[docIndex.DocId] = 2
}
}
indexer.tableLock.Unlock()
if indexer.RemoveDocToCache(0, forceUpdate) {
// 只有当存在于索引表中的文档已被删除,其才可以重新加入到索引表中
position = 0
}
addCachedDocs := indexer.addCacheLock.addCache[position:indexer.addCacheLock.addCachePointer]
indexer.addCacheLock.addCachePointer = position
indexer.addCacheLock.Unlock()
sort.Sort(addCachedDocs)
indexer.AddDocs(&addCachedDocs)
}
to remove the doc which docState=1 and delete the key in docState map, then it will call
AddDocs(addCache[postion:addCachePointer])
which position=0, so it will add all doc in addCache,
if ok && docState == 1 {
// 如果此时 docState 仍为 1,说明该文档需被删除
// docState 合法状态为 nil & 2,保证一定不会插入已经在索引表中的文档
continue
}
in this case, ok=false, so it will add the doc.
from riot.
What do you express by calling the function call? This is obviously a bug. Closing is due to duplicate ( #19 ) and non-issue regulations.
from riot.
Related Issues (20)
- Score
- Is it possible to search short sentences with long sentences
- Is is required to call indexDoc before search HOT 1
- What are Attri and Fields for?
- cost too many memory HOT 1
- Is it required to index all docs before search? HOT 2
- 有人说你这个是抄袭的,你怎么看?
- Q: why it is callled riot HOT 2
- About 文档的关键词(tokens) HOT 1
- Q: Incremental persistent storage
- grpc has been updated . But riot still uses Deprecated mesthods. Why not upgrade?
- riot 这个项目 grpc etcd 配置有没有完整的例子 做事情能不能别三天打鱼两天晒网 HOT 1
- 大家在提交代码时 都那么随意使用 很少有人维护的安装包 如果作者使用只有自己维护的包,能不能跟上更新? go-vgo相关包 HOT 2
- File search example please HOT 3
- pressure test. after 10000 times request, out of memory. HOT 1
- run store example thow errors (invalid argument) HOT 1
- TokenLoc out of length HOT 1
- Digital fuzzy query does not work HOT 1
- how can search office file
- 都不更新了?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from riot.