1
我需要找到任何特殊字符。如果我把它放在一個字的中間,SQLite的FTS比賽可以忽略它,如果它不存在,如:SQLite:哪個字符可以在一個字中用FTS匹配被忽略
Text Body: book's
如果我的匹配字符串是「圖書」我需要的「一書的」結果.. 使用porter或簡單標記器沒有問題。
我嘗試了很多像這樣的字符:book!s,book?s,book | s,book,s,book:s ...,但是當通過匹配搜索'books'時,沒有返回這些結果。
我不明白,爲什麼?
我使用:無內容FTS4表,外部內容FTS4表,我的文字的身體在每個字多字,應該改變搜索時忽略它..
我不能改變比賽的查詢,因爲我做的不知道單詞中的特殊字符在哪裏。此外,我需要保留原始字長等於FTS索引字的長度以使用匹配信息或snippet();因此,我無法從文本正文中移除這些字符。
我使用.net中的'System.Data.SQLite',所以我可以從C#編寫自定義標記器嗎?我對C或C++一無所知,所以該怎麼辦? 另一種方式,我可以像REGEXP函數從C#中覆蓋MATCH函數作爲SQLite函數嗎? – user2178696 2013-03-17 12:10:01
'MATCH'已經是一個自定義函數,由FTS虛擬表實現。你必須學習C,或者聘請一個有能力的人。 – 2013-03-17 14:39:15
謝謝..另外兩件事,1:是否有任何方法使用正則表達式與FTS或MATCH? 2:這是正確的方式來破解SQLite標記器,如果沒關係,如何解決我的問題?請參閱:http://sqlite.1065341.n5.nabble.com/FTS-simple-tokenizer-with-custom-delimeters-td43926.html – user2178696 2013-03-17 15:38:46