React native React native中的全文搜索
在这里,我是诺布, 我想知道是否可以在react中使用sqlite的FullTextSearch功能,如果可以,请告诉我在哪里可以了解更多信息。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 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}
/>