我不知道以下是否可能用於SQLite的fts(3/4)。 我創建了一個使用fts3的數據表。SQLite全文搜索目錄
如果我例如搜索e *我得到所有以^ e開始的所有內容 但是我還可以搜索索引/目錄中以e開頭的特定單詞嗎?
所以,我只是得到這個詞的結果回來像;艾略特,elo,eehh。
我不知道以下是否可能用於SQLite的fts(3/4)。 我創建了一個使用fts3的數據表。SQLite全文搜索目錄
如果我例如搜索e *我得到所有以^ e開始的所有內容 但是我還可以搜索索引/目錄中以e開頭的特定單詞嗎?
所以,我只是得到這個詞的結果回來像;艾略特,elo,eehh。
http://www.sqlite.org/fts3.html#section_3
SELECT * FROM docs WHERE docs MATCH 'lin*';
將返回包含開始 「林」 字的文檔。你只想要匹配的話,而不是上下文?也許「片段」功能會幫助你。你可能會發現感興趣的主題:
的FTS引擎提供通過offsets
虛函數的信息。
SELECT offsets(docs) FROM docs WHERE docs MATCH 'e*';
作爲文檔說:
對於使用全文索引SELECT查詢,()函數返回一個包含一系列空格隔開的整數的文本值的偏移量。對於當前行的每個詞組匹配中的每個詞,返回列表中有四個整數。每組四個整數解釋如下:
- 該術語實例出現的列號(0表示FTS表的最左列,1表示下一個最左邊的列,等等)。
- 全文查詢表達式中匹配項的詞彙編號。查詢表達式中的術語按其出現的順序從0開始編號。
- 列中匹配項的字節偏移量。
- 匹配項的大小(以字節爲單位)。
如何提取該信息取決於您以及如何將代碼與SQLite集成。
documentation of the snippet function對於其第6個參數比較模糊,因爲該算法使用最佳分數方法來查找片段。
不過在我的應用我得到的原有條款我期待與要求的清潔提取物:
select snippet(docs,'','','', -1, 1) from docs where docs match 'e*';
它可以在你的情況下幫助;這個數據庫內解決方案幫助我,因爲我不想提取位於db外的代碼中的術語。它適用於搜索單個單詞(沒有空格,或者,在MATCH查詢中)..
這將返回一組包含lin *的行,但是我想實現的是返回單詞由sqlite索引。因此,例如它應該返回你的例子中的linux,線性,linwhatever ...但不包含containt林* – Grezly 2010-12-23 15:24:37