基於字符串是否可以爲該字符串中的所有單詞創建自動完成功能?自動完成字符串中的所有單詞
例如:字符串str =「波支持機器人和小工具波機器人發展需要Java 1.6 A波可以被看作是其中包含的子波包絡線」。
現在,如果用戶在進入波輸入文本框,在下拉框中應該顯示:「Wave supports」,「Wave robot」和「wave can」。
總之,它應該顯示除了鍵入的單詞之外的下一個單詞。
基於字符串是否可以爲該字符串中的所有單詞創建自動完成功能?自動完成字符串中的所有單詞
例如:字符串str =「波支持機器人和小工具波機器人發展需要Java 1.6 A波可以被看作是其中包含的子波包絡線」。
現在,如果用戶在進入波輸入文本框,在下拉框中應該顯示:「Wave supports」,「Wave robot」和「wave can」。
總之,它應該顯示除了鍵入的單詞之外的下一個單詞。
你想要的是一個類似於trie的數據結構。一個特里特樹是一個樹狀二叉樹,使得在字典中搜索非常快速和簡單。最有可能的是一個trie用於存儲單詞而不是幾個字,但我想你仍然可以使用trie來完成你的任務。例如,你可以用你的句子的單詞做出第一個句號。然後你用你的句子的2個單詞做第二個句子,等等。現在您必須在每個特里查找來自動完成用戶的輸入。
是的,這是特里! http://en.wikipedia.org/wiki/Trie – bnieland 2011-03-22 11:47:01
如果您將整個單詞存儲在某個數據源[數據庫等]中,則這是可能的。檢查jQuery自動完成或只是搜索自動完成JavaScript插件。
一些指針讓你開始。
List<string> words = new List<string>(sData.Split(' '));
for (int i = 0; i < words.Count...
循環,當迴路電流項等於給定的輸入,添加words[i] + words[i + 1]
到一個列表,最初是空的字符串的單詞列表我們稱之爲matches
。matches
給瀏覽器,例如由|
字符delimeted:Response.Write(string.Join("|"), matches);
success
方法以及對於每個可能的匹配建立一條線,用戶可以選擇。或者如果他正在使用jquery ui只是將'array'傳遞給'source:'選項。 ;)+1 – 2011-03-22 11:45:11
@aSeptik謝謝,這確實是個好主意! :) – 2011-03-22 11:54:14
我是用jQuery Autocomplete完成的。
我從我的數據庫中返回了多組可能的答案。
根據輸入的內容,我在返回的列表中列出了優先級組,並在該列表的該子部分中對排序的alpha進行排序。組爲:
我把它使內進入設置在返回列表中的話返回結果列表中突出顯示。我的返回結果用匹配列出整個字符串,在匹配的單詞上用粗體顯示。
您可以很容易地使用您的「單詞加」方法來匹配字符串與單詞,再加上單詞列表中的每個單詞的下一個單詞,如您所描述的 - 可能這將應用於「開始」和「包含「我的戰略中的團隊可能會有所不同。
從性能的角度來看,我只使用約10,000字符串(每個最多255個字符)作爲一個可能的結果集,並只從字符串的原始樣品返回的一組有限的(比方說50的「最佳匹配」。
創建樹擴展字母組合
「錯誤對不起,我從來沒有讀過他的整個問題......我想它可以適用於言」
function wordTree(){
var WT = this;
WT.tree = {};
WT.word = function(word){
var current = WT.tree;
for(var i = 0;i < word.length; i ++){
var check = current[word[i ]];
if(!check){
current = current[word[i]] = {value: word.substr(0,i +1), words: [word]};
}else{
current = check;
current.words_ahead.push(word);
}
}
}
WT.getWords = function(base){
var current = WT.tree;
for(var i = 0;i < base.length; i ++){
var check = current[base[i]];
if(check){
current = check;
} else {
break;
}
}
return current.words;
}
}
現在創建基地樹
var tt = new wordTree();
添加所有你的話
tt.word("word");
tt.word("about");
tt.word("after");
tt.word("again");
tt.word("air");
tt.word("all");
tt.word("along");
tt.word("also");
tt.word("an");
tt.word("and");
tt.word("another");
tt.word("any");
tt.word("are");
tt.word("around");
tt.word("as");
tt.word("at");
tt.word("away");
tt.word("back");
tt.word("be");
tt.word("because");
tt.word("been");
tt.word("before");
tt.word("below");
tt.word("between");
tt.word("both");
tt.word("but");
tt.word("by");
tt.word("came");
tt.word("can");
tt.word("come");
tt.word("could");
tt.word("day");
tt.word("did");
tt.word("different");
tt.word("do");
tt.word("does");
tt.word("don");
tt.word("t");
tt.word("down");
tt.word("each");
tt.word("end");
tt.word("even");
tt.word("every");
tt.word("few");
tt.word("find");
tt.word("first");
tt.word("for");
tt.word("found");
tt.word("from");
tt.word("get");
tt.word("give");
tt.word("go");
tt.word("good");
tt.word("great");
tt.word("had");
tt.word("has");
tt.word("have");
tt.word("he");
tt.word("help");
tt.word("her");
tt.word("here");
tt.word("him");
tt.word("his");
tt.word("home");
tt.word("house");
tt.word("how");
tt.word("I");
tt.word("if");
tt.word("in");
tt.word("into");
tt.word("is");
tt.word("it");
tt.word("its");
tt.word("just");
tt.word("know");
tt.word("large");
tt.word("last");
tt.word("left");
tt.word("like");
tt.word("line");
tt.word("little");
tt.word("long");
tt.word("look");
tt.word("made");
tt.word("make");
tt.word("man");
tt.word("many");
tt.word("may");
tt.word("me");
tt.word("men");
tt.word("might");
tt.word("more");
tt.word("most");
tt.word("Mr");
tt.word("must");
tt.word("my");
tt.word("name");
tt.word("never");
tt.word("new");
tt.word("next");
tt.word("no");
tt.word("not");
tt.word("now");
tt.word("number");
tt.word("of");
tt.word("off");
tt.word("old");
tt.word("on");
tt.word("one");
tt.word("only");
tt.word("or");
tt.word("other");
tt.word("our");
tt.word("out");
tt.word("over");
tt.word("own");
tt.word("part");
tt.word("people");
tt.word("place");
tt.word("put");
tt.word("read");
tt.word("right");
tt.word("said");
tt.word("same");
tt.word("saw");
tt.word("say");
tt.word("see");
tt.word("she");
tt.word("should");
tt.word("show");
tt.word("small");
tt.word("so");
tt.word("some");
tt.word("something");
tt.word("sound");
tt.word("still");
tt.word("such");
tt.word("take");
tt.word("tell");
tt.word("than");
tt.word("that");
tt.word("the");
tt.word("them");
tt.word("then");
tt.word("there");
tt.word("these");
tt.word("they");
tt.word("thing");
tt.word("think");
tt.word("this");
tt.word("those");
tt.word("thought");
tt.word("three");
tt.word("through");
tt.word("time");
tt.word("to");
tt.word("together");
tt.word("too");
tt.word("two");
tt.word("under");
tt.word("up");
tt.word("us");
tt.word("use");
tt.word("very");
tt.word("want");
tt.word("water");
tt.word("way");
tt.word("we");
tt.word("well");
tt.word("went");
tt.word("were");
tt.word("what");
tt.word("when");
tt.word("where");
tt.word("which");
tt.word("while");
tt.word("who");
tt.word("why");
tt.word("will");
tt.word("with");
tt.word("word");
tt.word("work");
tt.word("world");
tt.word("would");
tt.word("write");
tt.word("year");
tt.word("you");
tt.word("your");
搜索任何與 「沃」
tt.getWords("wo");
鉻控制檯輸出這樣的事情
Object {item_value: "wo", words: Array[5], r: Object, u: Object}
item_value: "wo"
r: Object
u: Object
words_ahead: Array[5]
0: "word"
1: "word"
2: "work"
3: "world"
4: "would"
length: 5
__proto__: Array[0]
__proto__: Object
statring
是的,這是可能的。你想自己寫這個嗎?尋找其他人已經做了什麼?只是指導? – 2011-03-22 09:53:31
如果您使用MS SQL Server您可以查看FullText目錄搜索選項。 – 2011-03-22 10:09:18
只有一些關於如何開始的指針 – dazzle 2011-03-22 10:35:16