mirror of
https://github.com/toolgood/ToolGood.Words.git
synced 2026-10-17 04:40:38 +08:00
修改 SetKeywords
This commit is contained in:
@@ -81,8 +81,6 @@ class WordsSearch():
|
||||
self._indexs.append(i)
|
||||
|
||||
root = TrieNode()
|
||||
allNode = []
|
||||
allNode.append(root)
|
||||
allNodeLayer={}
|
||||
|
||||
for i in range(len(self._keywords)): # for (i = 0; i < _keywords.length; i++)
|
||||
@@ -99,43 +97,29 @@ class WordsSearch():
|
||||
allNodeLayer[nd.Layer].append(nd)
|
||||
nd.SetResults(i)
|
||||
|
||||
allNode = []
|
||||
allNode.append(root)
|
||||
for key in allNodeLayer.keys():
|
||||
for nd in allNodeLayer[key]:
|
||||
allNode.append(nd)
|
||||
allNodeLayer=None
|
||||
|
||||
|
||||
nodes = []
|
||||
for key in root.m_values.keys() :
|
||||
nd = root.m_values[key]
|
||||
nd.Failure = root
|
||||
for trans in nd.m_values :
|
||||
nodes.append(nd.m_values[trans])
|
||||
|
||||
while len(nodes) != 0:
|
||||
newNodes = []
|
||||
for nd in nodes :
|
||||
#nd = nodes[key]
|
||||
r = nd.Parent.Failure
|
||||
c = nd.Char
|
||||
while (r != None and (c in r.m_values)==False):
|
||||
r = r.Failure
|
||||
if (r == None):
|
||||
nd.Failure = root
|
||||
else:
|
||||
nd.Failure = r.m_values[c]
|
||||
for key2 in nd.Failure.Results :
|
||||
nd.SetResults(key2)
|
||||
|
||||
|
||||
for key2 in nd.m_values :
|
||||
child = nd.m_values[key2]
|
||||
newNodes.append(child)
|
||||
nodes = newNodes
|
||||
root.Failure = root
|
||||
|
||||
#allNode = self.__quickSort(allNode)
|
||||
for i in range(len(allNode)): # for (i = 0; i < allNode.length; i++)
|
||||
allNode[i].Index = i
|
||||
if i==0 :
|
||||
continue
|
||||
nd=allNode[i]
|
||||
nd.Index = i
|
||||
r = nd.Parent.Failure
|
||||
c = nd.Char
|
||||
while (r != None and (c in r.m_values)==False):
|
||||
r = r.Failure
|
||||
if (r == None):
|
||||
nd.Failure = root
|
||||
else:
|
||||
nd.Failure = r.m_values[c]
|
||||
for key2 in nd.Failure.Results :
|
||||
nd.SetResults(key2)
|
||||
root.Failure = root
|
||||
|
||||
allNode2 = []
|
||||
for i in range(len(allNode)): # for (i = 0; i < allNode.length; i++)
|
||||
|
||||
@@ -74,8 +74,6 @@ class StringSearch():
|
||||
def SetKeywords(self,keywords):
|
||||
self._keywords = keywords
|
||||
root = TrieNode()
|
||||
allNode = []
|
||||
allNode.append(root)
|
||||
allNodeLayer={}
|
||||
|
||||
for i in range(len(self._keywords)): # for (i = 0; i < _keywords.length; i++)
|
||||
@@ -86,47 +84,36 @@ class StringSearch():
|
||||
if (nd.Layer == 0):
|
||||
nd.Layer = j + 1
|
||||
if nd.Layer in allNodeLayer:
|
||||
allNodeLayer[nd.Layer].append(nd);
|
||||
allNodeLayer[nd.Layer].append(nd)
|
||||
else:
|
||||
allNodeLayer[nd.Layer]=[]
|
||||
allNodeLayer[nd.Layer].append(nd);
|
||||
allNodeLayer[nd.Layer].append(nd)
|
||||
nd.SetResults(i)
|
||||
|
||||
|
||||
allNode = []
|
||||
allNode.append(root)
|
||||
for key in allNodeLayer.keys():
|
||||
for nd in allNodeLayer[key]:
|
||||
allNode.append(nd)
|
||||
|
||||
nodes = []
|
||||
for key in root.m_values.keys() :
|
||||
nd = root.m_values[key]
|
||||
nd.Failure = root
|
||||
for trans in nd.m_values :
|
||||
nodes.append(nd.m_values[trans])
|
||||
|
||||
while len(nodes) != 0:
|
||||
newNodes = []
|
||||
for nd in nodes :
|
||||
#nd = nodes[key]
|
||||
r = nd.Parent.Failure
|
||||
c = nd.Char
|
||||
while (r != None and (c in r.m_values)==False):
|
||||
r = r.Failure
|
||||
if (r == None):
|
||||
nd.Failure = root
|
||||
else:
|
||||
nd.Failure = r.m_values[c]
|
||||
for key2 in nd.Failure.Results :
|
||||
nd.SetResults(key2)
|
||||
|
||||
|
||||
for key2 in nd.m_values :
|
||||
child = nd.m_values[key2]
|
||||
newNodes.append(child)
|
||||
nodes = newNodes
|
||||
root.Failure = root
|
||||
allNodeLayer=None
|
||||
|
||||
for i in range(len(allNode)): # for (i = 0; i < allNode.length; i++)
|
||||
allNode[i].Index = i
|
||||
if i==0 :
|
||||
continue
|
||||
nd=allNode[i]
|
||||
nd.Index = i
|
||||
r = nd.Parent.Failure
|
||||
c = nd.Char
|
||||
while (r != None and (c in r.m_values)==False):
|
||||
r = r.Failure
|
||||
if (r == None):
|
||||
nd.Failure = root
|
||||
else:
|
||||
nd.Failure = r.m_values[c]
|
||||
for key2 in nd.Failure.Results :
|
||||
nd.SetResults(key2)
|
||||
root.Failure = root
|
||||
|
||||
allNode2 = []
|
||||
for i in range(len(allNode)): # for (i = 0; i < allNode.length; i++)
|
||||
|
||||
@@ -81,8 +81,6 @@ class WordsSearch():
|
||||
self._indexs.append(i)
|
||||
|
||||
root = TrieNode()
|
||||
allNode = []
|
||||
allNode.append(root)
|
||||
allNodeLayer={}
|
||||
|
||||
for i in range(len(self._keywords)): # for (i = 0; i < _keywords.length; i++)
|
||||
@@ -99,43 +97,29 @@ class WordsSearch():
|
||||
allNodeLayer[nd.Layer].append(nd)
|
||||
nd.SetResults(i)
|
||||
|
||||
allNode = []
|
||||
allNode.append(root)
|
||||
for key in allNodeLayer.keys():
|
||||
for nd in allNodeLayer[key]:
|
||||
allNode.append(nd)
|
||||
allNodeLayer=None
|
||||
|
||||
|
||||
nodes = []
|
||||
for key in root.m_values.keys() :
|
||||
nd = root.m_values[key]
|
||||
nd.Failure = root
|
||||
for trans in nd.m_values :
|
||||
nodes.append(nd.m_values[trans])
|
||||
|
||||
while len(nodes) != 0:
|
||||
newNodes = []
|
||||
for nd in nodes :
|
||||
#nd = nodes[key]
|
||||
r = nd.Parent.Failure
|
||||
c = nd.Char
|
||||
while (r != None and (c in r.m_values)==False):
|
||||
r = r.Failure
|
||||
if (r == None):
|
||||
nd.Failure = root
|
||||
else:
|
||||
nd.Failure = r.m_values[c]
|
||||
for key2 in nd.Failure.Results :
|
||||
nd.SetResults(key2)
|
||||
|
||||
|
||||
for key2 in nd.m_values :
|
||||
child = nd.m_values[key2]
|
||||
newNodes.append(child)
|
||||
nodes = newNodes
|
||||
root.Failure = root
|
||||
|
||||
#allNode = self.__quickSort(allNode)
|
||||
for i in range(len(allNode)): # for (i = 0; i < allNode.length; i++)
|
||||
allNode[i].Index = i
|
||||
if i==0 :
|
||||
continue
|
||||
nd=allNode[i]
|
||||
nd.Index = i
|
||||
r = nd.Parent.Failure
|
||||
c = nd.Char
|
||||
while (r != None and (c in r.m_values)==False):
|
||||
r = r.Failure
|
||||
if (r == None):
|
||||
nd.Failure = root
|
||||
else:
|
||||
nd.Failure = r.m_values[c]
|
||||
for key2 in nd.Failure.Results :
|
||||
nd.SetResults(key2)
|
||||
root.Failure = root
|
||||
|
||||
allNode2 = []
|
||||
for i in range(len(allNode)): # for (i = 0; i < allNode.length; i++)
|
||||
|
||||
@@ -81,8 +81,6 @@ class WordsSearch():
|
||||
self._indexs.append(i)
|
||||
|
||||
root = TrieNode()
|
||||
allNode = []
|
||||
allNode.append(root)
|
||||
allNodeLayer={}
|
||||
|
||||
for i in range(len(self._keywords)): # for (i = 0; i < _keywords.length; i++)
|
||||
@@ -93,47 +91,36 @@ class WordsSearch():
|
||||
if (nd.Layer == 0):
|
||||
nd.Layer = j + 1
|
||||
if nd.Layer in allNodeLayer:
|
||||
allNodeLayer[nd.Layer].append(nd);
|
||||
allNodeLayer[nd.Layer].append(nd)
|
||||
else:
|
||||
allNodeLayer[nd.Layer]=[]
|
||||
allNodeLayer[nd.Layer].append(nd);
|
||||
allNodeLayer[nd.Layer].append(nd)
|
||||
nd.SetResults(i)
|
||||
|
||||
|
||||
allNode = []
|
||||
allNode.append(root)
|
||||
for key in allNodeLayer.keys():
|
||||
for nd in allNodeLayer[key]:
|
||||
allNode.append(nd)
|
||||
|
||||
nodes = []
|
||||
for key in root.m_values.keys() :
|
||||
nd = root.m_values[key]
|
||||
nd.Failure = root
|
||||
for trans in nd.m_values :
|
||||
nodes.append(nd.m_values[trans])
|
||||
|
||||
while len(nodes) != 0:
|
||||
newNodes = []
|
||||
for nd in nodes :
|
||||
#nd = nodes[key]
|
||||
r = nd.Parent.Failure
|
||||
c = nd.Char
|
||||
while (r != None and (c in r.m_values)==False):
|
||||
r = r.Failure
|
||||
if (r == None):
|
||||
nd.Failure = root
|
||||
else:
|
||||
nd.Failure = r.m_values[c]
|
||||
for key2 in nd.Failure.Results :
|
||||
nd.SetResults(key2)
|
||||
|
||||
|
||||
for key2 in nd.m_values :
|
||||
child = nd.m_values[key2]
|
||||
newNodes.append(child)
|
||||
nodes = newNodes
|
||||
root.Failure = root
|
||||
allNodeLayer=None
|
||||
|
||||
for i in range(len(allNode)): # for (i = 0; i < allNode.length; i++)
|
||||
allNode[i].Index = i
|
||||
if i==0 :
|
||||
continue
|
||||
nd=allNode[i]
|
||||
nd.Index = i
|
||||
r = nd.Parent.Failure
|
||||
c = nd.Char
|
||||
while (r != None and (c in r.m_values)==False):
|
||||
r = r.Failure
|
||||
if (r == None):
|
||||
nd.Failure = root
|
||||
else:
|
||||
nd.Failure = r.m_values[c]
|
||||
for key2 in nd.Failure.Results :
|
||||
nd.SetResults(key2)
|
||||
root.Failure = root
|
||||
|
||||
allNode2 = []
|
||||
for i in range(len(allNode)): # for (i = 0; i < allNode.length; i++)
|
||||
|
||||
Reference in New Issue
Block a user