Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 搜索Sqlite全文搜索阿拉伯语,不带发音符号_Android_Sqlite_Arabic_Diacritics_Fts4 - Fatal编程技术网

Android 搜索Sqlite全文搜索阿拉伯语,不带发音符号

Android 搜索Sqlite全文搜索阿拉伯语,不带发音符号,android,sqlite,arabic,diacritics,fts4,Android,Sqlite,Arabic,Diacritics,Fts4,我有一个带FTS4搜索功能的sqlite数据库。它有很多带变音符号的阿拉伯文文本,这对查看和可读性很重要,但对搜索不重要 我希望搜索是不区分变音符号的,但它似乎只在我键入时查找匹配项,而忽略了所有甚至只有一个变音符号的内容 我如何防止它这样做。我知道定制的sqlite函数在android中是不可使用的,而且标记器非常有限。根据我的经验,最短的解决方案是存储两种形式的阿拉伯字符串,带变音符号用于显示,不带变音符号用于搜索。因此,您可以使用简单的数据库搜索功能 只有当你的应用程序使用某种高级搜索引擎

我有一个带FTS4搜索功能的sqlite数据库。它有很多带变音符号的阿拉伯文文本,这对查看和可读性很重要,但对搜索不重要

我希望搜索是不区分变音符号的,但它似乎只在我键入时查找匹配项,而忽略了所有甚至只有一个变音符号的内容


我如何防止它这样做。我知道定制的sqlite函数在android中是不可使用的,而且标记器非常有限。

根据我的经验,最短的解决方案是存储两种形式的阿拉伯字符串,带变音符号用于显示,不带变音符号用于搜索。因此,您可以使用简单的数据库搜索功能

只有当你的应用程序使用某种高级搜索引擎时,你才能实现一个阿拉伯语发音功能来过滤这些发音。(有些已经具有这种功能)


搜索引擎在索引时使用词干分析功能。

根据我的经验,最短的解决方案是存储两种形式的阿拉伯字符串,显示时使用变音符号,搜索时不使用变音符号。因此,您可以使用简单的数据库搜索功能

只有当你的应用程序使用某种高级搜索引擎时,你才能实现一个阿拉伯语发音功能来过滤这些发音。(有些已经具有这种功能)

搜索引擎在索引时使用词干函数。

这是一个示例

SELECT field
from myTable
where replace (replace(replace (replace(replace(replace(replace(replace(
      field 
      ,char(1612) ,"") ,char(1611) ,""),char(1614) ,""),char(1615) ,""),char(1616) ,""),char(1617) ,""),char(1618) ,""),char(1648) ,"") 
      like '%طائفة%'
这是一个例子

SELECT field
from myTable
where replace (replace(replace (replace(replace(replace(replace(replace(
      field 
      ,char(1612) ,"") ,char(1611) ,""),char(1614) ,""),char(1615) ,""),char(1616) ,""),char(1617) ,""),char(1618) ,""),char(1648) ,"") 
      like '%طائفة%'

是的,这似乎是唯一的方法,它有一个问题,当它确实找到一个匹配,并且我用变音符号显示文本时,我无法在文本中找到匹配,因为字符偏移量/字节偏移量现在不同了…是的,这似乎是唯一的方法,它的问题是,当它确实找到一个匹配项,并且我用变音符号显示文本时,我无法在文本中找到匹配项,因为字符偏移量/字节偏移量现在不同了…看看这个答案(它可能会帮助你)看看这个答案(它可能会帮助你)