PDA

View Full Version : سوال: جستجوی پیشرفته بدون در نظر گرفتن space



jafarpalideh
چهارشنبه 04 تیر 1393, 10:42 صبح
با سلام .
من میخوام مثلا این عبارت رو جستجو کنم : سنسور نوري تبريز مدل OPS-3300-OP-18-TB 10-30VDC
اگه بخوام از دستور LIKE استفاده کنم همون اول اگه بنویسم :"سن"و دکمه ی "Space" رو بزنم هیچ موردی رو به من بر نمیگردونه .
من میخوام تویه کل این عبارت جستجو انجام بشه و مثلا وقتی می نویسم : سن TB تمام TB ها و سن هارو واسم فیلتر کنه .
امیدوارم که منظورم رو رسونده باشم !!!

hamid_hr
چهارشنبه 04 تیر 1393, 11:20 صبح
http://barnamenevis.org/search.php?searchid=3009665

jafarpalideh
چهارشنبه 04 تیر 1393, 11:26 صبح
اون لینک که گذاشتید اشتباهه

hamid_hr
چهارشنبه 04 تیر 1393, 11:39 صبح
نه اشتباه نیس
باید در مورد full text search سرچ کنی

jafarpalideh
چهارشنبه 04 تیر 1393, 12:39 عصر
من طبق بعضی از پست ها من فول تکست سرچ رو رویه تیبل راه اندازی کردم .
الان جستجویه زیر رو چطور باید انجام بدم ؟

private void button1_Click(object sender, EventArgs e) {
SqlDataAdapter da = new SqlDataAdapter("select * from S_ODS where FREETEXT(OD_NM , 'ز') ", con);
da.SelectCommand.CommandType = CommandType.Text;
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();


}
الان من جواب نگرفتم از این کوئری

Davidd
چهارشنبه 04 تیر 1393, 12:57 عصر
اتفاقا برعكس اينجا Full Text جواب نميده. Full Text براي جستجوي سريعتر متن، ليست تمام كلمات در مياره و ايندكس گذاري مي كنه. به عنوان مثال كلمه "فايل" با كلمه "فايلها" دو كلمه مجزا نشخيص داده ميشه و جدا ايندكس گذاري ميشه.
اينجا همون Like بايد استفاده كني. راهش اينه كه بر اساس space كلمات جدا كني و توي كوئري از Like و And استفاده كني. براي مثال بالا به ايصورت :
OD_NM Like '%TB%' AND OD_NM Like '%سن%'

jafarpalideh
چهارشنبه 04 تیر 1393, 13:06 عصر
من این رو نوشتم ولی جواب نمیده . یعنی وقتی space رو بعد از اولین کلمه که بصورت ناقص نوشتمش میزنم دیگه چیزی رو پیدا نمیکنه !!!



SqlDataAdapter da = new SqlDataAdapter("select * from S_ODS where OD_NM like '%" + textBox1.Text + "%' ", con);
da.SelectCommand.CommandType = CommandType.Text;
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;

con.Close();

Davidd
چهارشنبه 04 تیر 1393, 13:19 عصر
space خودش يه كاراكتر محسوب ميشه نبايد هم پيدا كنه. كوئري كه نوشتم يه مشكل داشت درستش كردم. اونو تست كن

jafarpalideh
چهارشنبه 04 تیر 1393, 13:32 عصر
جواب نمیده .
من کد زیر رو تویه رویداد text_change نوشتم و جواب نگرفتم !!


private void textBox1_TextChanged(object sender, EventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter("select * from S_ODS where OD_NM like '%" + textBox1.Text + "%' ", con);
da.SelectCommand.CommandType = CommandType.Text;
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();

}

jafarpalideh
چهارشنبه 04 تیر 1393, 13:49 عصر
من از کوئری زیر استفاده میکنم ولی نتایجی که به من میده (طبق عکس که میزارم) یکم عجیبه !!!!!
کسی میدونه مشکل کجاست ؟

con.Open();



SqlDataAdapter da = new SqlDataAdapter("select OD_NM from S_ODS where FREETEXT(OD_NM ,'"+textBox1.Text+"') ", con);
da.SelectCommand.CommandType = CommandType.Text;
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();





120486

jafarpalideh
چهارشنبه 04 تیر 1393, 13:51 عصر
جالبترش اینجاست که کاراکتر به کاراکتر سرچ نمیشه و باید یک کلمه رو تایپ کنم به صورت کامل !!!!

Davidd
چهارشنبه 04 تیر 1393, 14:18 عصر
بهتره يه كم بيشتر در مورد دستور Like و ايندكس گذاري Full Text مطالعه كني. همانطور كه گفتم Full Text كلمات رو ايندكس گذاري مي كنه نه كاراكترها. سرچ Full Text مانند سرچ گوگل عمل مي كنه. ركورد هايي مياره كه چند تا از اين كلمات توش باشه (بدون در نظر گرفتن ترتيب كلمات)

Hadoop
پنج شنبه 05 تیر 1393, 05:01 صبح
حیف که نمیتونی از Solr استفاده کنی

jafarpalideh
پنج شنبه 05 تیر 1393, 08:36 صبح
حیف که نمیتونی از Solr استفاده کنی
حالا این چی هست ؟

jafarpalideh
پنج شنبه 05 تیر 1393, 08:38 صبح
یافتمش :
ولی باید وجود داشته باشه . حال من سعی میکنم یه تیکه فیلم از این سرچی که تویه یه نرم افزار دیدم بزارم



SolrTM is the popular, blazing fast open source enterprise search platform from the Apache LuceneTMproject. Its major features include powerful full-text search, hit highlighting, faceted search, near real-time indexing, dynamic clustering, database integration, rich document (e.g., Word, PDF) handling, and geospatial search. Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery, centralized configuration and more. Solr powers the search and navigation features of many of the world's largest internet sites.
Solr is written in Java and runs as a standalone full-text search server within a servlet container such as Jetty. Solr uses the Lucene Java search library at its core for full-text indexing and search, and has REST-like HTTP/XML and JSON APIs that make it easy to use from virtually any programming language. Solr's powerful external configuration allows it to be tailored to almost any type of application without Java coding, and it has an extensive plugin architecture when more advanced customization is required.

jafarpalideh
پنج شنبه 05 تیر 1393, 08:56 صبح
من یه تیکه فیلم رو ضمیمه کردم . امیدوارم دیگه منظورم رو کامل رسونده باشم . 770 کیلوبایت بیشتر نیست

amir200h
پنج شنبه 05 تیر 1393, 10:15 صبح
private void button3_Click(object sender, EventArgs e) {
string[] a = textBox1.Text.Split(' ');
string b = "select * from table where fildname like '%";
for (int i = 0; i < a.Length; i++)
{
if (i < a.Length - 1)
b += a[i] + "%' and fildname like '%";
else
b += a[i] + "%'";
}
MessageBox.Show(b);
}

jafarpalideh
پنج شنبه 05 تیر 1393, 10:38 صبح
واقعا ممنون از لطفت . عالی بود .
میشه کدت رو یکم توضیح بدی ؟
شما اول اومدی کاراکتر Space رو Splite کردی و ریختیش تویه یه آرایه از نوع استرینگ و ... ؟؟؟

jafarpalideh
پنج شنبه 05 تیر 1393, 11:03 صبح
من الان میخوام : كارت PLC با كد DVP28SV11T رو جستجو کنم موقعی که مینویسم : کارت PLC چیزی پیدا نمیکنه (این اولین مشکلشه که من دیدم)
و دوم اینکه وقتی اول مینویسم PLC و بعد مینویسم کارت چیزی پیدا نمیکنه . من میخوام که اگه کلمه رو هم پس و پیش نوشتم کلمه رو پیدا کنه

jafarpalideh
پنج شنبه 05 تیر 1393, 11:10 صبح
البته تویه فیلم این موردی رو که گفتم رو نشون دادم که کلمه اگه جابجا هم باشه جستجو انجام میشه

مهرداد صفا
یک شنبه 22 تیر 1393, 17:47 عصر
من الان میخوام : كارت PLC با كد DVP28SV11T رو جستجو کنم موقعی که مینویسم : کارت PLC چیزی پیدا نمیکنه (این اولین مشکلشه که من دیدم)
و دوم اینکه وقتی اول مینویسم PLC و بعد مینویسم کارت چیزی پیدا نمیکنه . من میخوام که اگه کلمه رو هم پس و پیش نوشتم کلمه رو پیدا کنه


سلام.
کد پست 17 رو که جناب amir200h عزیز گذاشتند استفاده کنید. فقط به جای and از or استفاده کنید.