React native React native中的全文搜索

React native React native中的全文搜索,react-native,sqlite,react-native-android,react-native-ios,React Native,Sqlite,React Native Android,React Native Ios,在这里,我是诺布, 我想知道是否可以在react中使用sqlite的FullTextSearch功能,如果可以,请告诉我在哪里可以了解更多信息。 谢谢 使用React Native的领域数据库, Realm是一个面向对象的数据库。OO模型使其速度比SQLite快10倍,并使您免于运行大量查询,这对于典型的SQL数据库来说是很常见的 而fuse.js可以帮助您搜索文本。realm=newrealm({ realm = new Realm({ schema: [Student

在这里,我是诺布, 我想知道是否可以在react中使用sqlite的FullTextSearch功能,如果可以,请告诉我在哪里可以了解更多信息。
谢谢

使用React Native的领域数据库, Realm是一个面向对象的数据库。OO模型使其速度比SQLite快10倍,并使您免于运行大量查询,这对于典型的SQL数据库来说是很常见的 而fuse.js可以帮助您搜索文本。

realm=newrealm({
    realm = new Realm({
        schema: [StudentScheme]
    })

    const mydata = realm.objects('Product_Info');

    let filteredData = [];

    let keywords = search.split(" ");

    keywords.forEach((obj, index) => {
        let databaseSearchResult = mydata.filtered("prodName LIKE[c] $0 OR prodDesc LIKE[c] $0", "*" + obj + "*")
        Object.keys(databaseSearchResult).map(key => {
            filteredData.push(databaseSearchResult[key])
        })
    });

           <SearchBar
                placeholder="Type Here..."
                onChangeText={this.updateSearch}
                value={this.state.search}
            />
            <FlatList
                data={this.state.filteredData}
                renderItem={this.rowRenderer}
                keyExtractor={(item, key) => key}
            />
schema:[StudentScheme] }) const mydata=realm.objects('Product_Info'); 让filteredata=[]; let关键字=search.split(“”); 关键词.forEach((对象,索引)=>{ 让databaseSearchResult=mydata.filtered(“类似于prodName的[c]$0或类似于prodDesc的[c]$0”,“*”+obj+“*”) key(数据库搜索结果).map(key=>{ push(数据库搜索结果[键]) }) }); 密钥} />
=====================================================================

updateSearch = search => {
    this.setState({search: search}, () => this.searchText(search.trim()));
};

searchText = (search) => {

    console.log("   Detail Activity  ------------- search -->" + search);

    realm = new Realm({
        schema: [StudentScheme]
    })
    const mydata = realm.objects('Product_Info');

    let filteredData = {};

    let keywords = search.split(" ");


     keywords.forEach((obj, index) => {
        let databaseSearchResult = mydata.filtered("prodName LIKE[c] $0 OR 
                                 prodDesc LIKE[c] $0", "*" + obj + "*")

        Object.keys(databaseSearchResult).map(key => {
            filteredData[`${Object.keys(filteredData).length}`] = 
                                                   databaseSearchResult[key]
        })
    });

    this.setState({
        filteredData
    }, () => {
         console.log('Search-------------------------------FILTER DATA', this.state.filteredData)

        let dataProvider = new DataProvider((r1, r2) => r1 !== r2)

        let updatedDataProvider=dataProvider.cloneWithRows(filteredData)
        this.setState({dataProvider: updatedDataProvider},()=>{
             console.log("CALLBACKK ", this.state.dataProvider)
        })

    })
}

            <SearchBar
                placeholder="Type Here..."
                onChangeText={this.updateSearch}
                value={this.state.search}
            />

            {
                Object.keys(this.state.filteredData).map((key)=>(
                    this.rowRenderer(null, this.state.filteredData[key])
                ))
            }
updateSearch=search=>{
this.setState({search:search},()=>this.searchText(search.trim());
};
searchText=(搜索)=>{
console.log(“详细活动------------------search-->”+search);
领域=新领域({
schema:[StudentScheme]
})
const mydata=realm.objects('Product_Info');
让filteredData={};
let关键字=search.split(“”);
关键词.forEach((对象,索引)=>{
让databaseSearchResult=mydata.filtered(“prodName类似[c]$0或
类似于[c]$0“,“*”+obj+“*”)的产品描述
key(数据库搜索结果).map(key=>{
Filteredata[`${Object.keys(Filteredata.length}`]=
数据库搜索结果[键]
})
});
这是我的国家({
过滤数据
}, () => {
console.log('Search--------------------FILTER DATA',this.state.filteredData)
让dataProvider=新的dataProvider((r1,r2)=>r1!==r2)
让UpdateDataProvider=dataProvider.cloneWithRows(filteredData)
this.setState({dataProvider:UpdateDataProvider},()=>{
log(“CALLBACKK”,this.state.dataProvider)
})
})
}
{
Object.keys(this.state.filteredData).map((key)=>(
this.rowRenderer(null,this.state.Filteredata[key])
))
}
var Realm=require('Realm');
让王国;
让dataProvider=新的dataProvider((r1,r2)=>r1!==r2)
领域=新领域({
schema:[StudentScheme]
})
状态={
搜索:“”,
数据提供程序:新的数据提供程序((r1,r2)=>r1!==r2).cloneWithRows({}),
筛选器数据:{}
};
updateSearch=搜索=>{
this.setState({search:search},()=>this.searchText(search.trim());
};
searchText=(搜索)=>{
console.log(“详细活动------------------search-->”+search);
const mydata=realm.objects('Product_Info');
让filteredata=[];
let关键字=search.split(“”);
关键词.forEach((对象,索引)=>{
让databaseSearchResult=mydata.filtered(“类似于prodName的[c]$0或类似于prodDesc的[c]$0或类似于prodPrice的[c]$0”,“*”+obj+“*”)
key(数据库搜索结果).map(key=>{
push(数据库搜索结果[键])
})
});
这是我的国家({
过滤数据
}, () => {
console.log('Search--------------------FILTER DATA\n',this.state.filteredData)
console.log('Search--------------------FILTER DATA-----------------\n');
})
}
fetchDB=()=>{
var mydata=realm.objects('Product_Info');
this.setState({dataProvider:dataProvider.cloneWithRows(mydata),filteredData:mydata})//TODO。。。
}
密钥}
/>

您真正想做的事情。为什么需要sqlite来搜索testI有大量文本文档(29000个)(主要是medecine SPC文件)我想让用户能够在这些文件中搜索关键字,所有文本文档都遵循相同的结构
var Realm = require('realm');

let realm;


let dataProvider = new DataProvider((r1, r2) => r1 !== r2)
realm = new Realm({
    schema: [StudentScheme]
})



    state = {
        search: '',
        dataProvider: new DataProvider((r1, r2) => r1 !== r2).cloneWithRows({}),
        filteredData: {}
    };

    updateSearch = search => {
        this.setState({search: search}, () => this.searchText(search.trim()));
    };

    searchText = (search) => {
        console.log("   Detail Activity  ------------- search -->" + search);

        const mydata = realm.objects('Product_Info');

        let filteredData = [];

        let keywords = search.split(" ");

        keywords.forEach((obj, index) => {

            let databaseSearchResult = mydata.filtered("prodName LIKE[c] $0 OR prodDesc LIKE[c] $0 OR prodPrice LIKE[c]  $0 ", "*" + obj + "*" )

            Object.keys(databaseSearchResult).map(key => {
                filteredData.push(databaseSearchResult[key])
            })

        });

        this.setState({
            filteredData
        }, () => {
            console.log('Search-------------------------------FILTER DATA \n', this.state.filteredData)

            console.log('Search-------------------------------FILTER DATA--------------- \n');
        })
    }


    fetchDB = () => {
        var mydata = realm.objects('Product_Info');

        this.setState({dataProvider: dataProvider.cloneWithRows(mydata), filteredData: mydata})          //TODO ...
    }



        <FlatList
            data={this.state.filteredData}
            renderItem={this.rowRenderer}
            keyExtractor={(item, key) => key}
            />