Раскрытие: Я новичок в Android, так что после прочтения советов и все, я я разместить этот вопрос разумно. Простите, если я где-то ошибаюсь. Я видел много сообщений из SO и многих других блогов, но кроме теорий, Я не получаю никакого конкретного решения для своего кода.поиск Proximity с Lucene Android
Я делаю проект, где моя задача - создать рабочий проект lucene для поиска данных из json-файла.
Теперь, что мне нужно сделать точно, когда пользователь вводит что-то в searchView, пользователь должен получить listview, зависящий от введенного текста, с примером поиска PROXIMITY.
То, что я пытался до сих пор есть,
Analyzer analyzer = null;
QueryParser queryParser = new QueryParser(string_searchText, analyzer);
try {
Query query = queryParser.parse("\"how today\"~10");
Toast.makeText(getApplicationContext(), query.toString(),
Toast.LENGTH_LONG).show();
Log.v("..query..", query.toString());
} catch (org.apache.lucene.queryparser.classic.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Здесь string_searchText является то, что пользователь вводит в SearchView, и этот текст хранится в этой строке, так что может быть 5-10 слов, так что теперь я имеют эту логику для двух слов ..
Я хочу иметь логику для большего количества слов, так что мне делать?
или
я должен работать только с 2-мя словами близости?
Но я получаю ниже ошибки ..
01-03 00:53:21.073: D/AbsListView(26352): onVisibilityChanged() is called, visibility : 4
01-03 00:53:21.073: D/AbsListView(26352): unregisterIRListener() is called
01-03 00:53:21.103: D/AbsListView(26352): Get MotionRecognitionManager
01-03 00:53:21.133: D/AbsListView(26352): onVisibilityChanged() is called, visibility : 4
01-03 00:53:21.133: D/AbsListView(26352): unregisterIRListener() is called
01-03 00:53:21.143: D/AbsListView(26352): onVisibilityChanged() is called, visibility : 0
01-03 00:53:21.143: D/AbsListView(26352): unregisterIRListener() is called
01-03 00:53:21.193: D/AbsListView(26352): unregisterIRListener() is called
01-03 00:53:21.303: D/AbsListView(26352): unregisterIRListener() is called
01-03 00:53:21.313: D/AbsListView(26352): unregisterIRListener() is called
01-03 00:53:22.524: D/WritingBuddyImpl(26352): getCurrentWritingBuddyView()
01-03 00:53:22.694: D/AbsListView(26352): unregisterIRListener() is called
01-03 00:53:24.456: D/AbsListView(26352): unregisterIRListener() is called
01-03 00:53:24.646: D/AbsListView(26352): unregisterIRListener() is called
01-03 00:53:25.227: D/AbsListView(26352): onVisibilityChanged() is called, visibility : 0
01-03 00:53:25.227: D/AbsListView(26352): unregisterIRListener() is called
01-03 00:53:25.397: D/AndroidRuntime(26352): Shutting down VM
01-03 00:53:25.397: W/dalvikvm(26352): threadid=1: thread exiting with uncaught exception (group=0x40e23930)
01-03 00:53:25.417: E/AndroidRuntime(26352): FATAL EXCEPTION: main
01-03 00:53:25.417: E/AndroidRuntime(26352): java.lang.NullPointerException
01-03 00:53:25.417: E/AndroidRuntime(26352): at org.apache.lucene.util.QueryBuilder.createFieldQuery(QueryBuilder.java:205)
01-03 00:53:25.417: E/AndroidRuntime(26352): at org.apache.lucene.queryparser.classic.QueryParserBase.newFieldQuery(QueryParserBase.java:480)
01-03 00:53:25.417: E/AndroidRuntime(26352): at org.apache.lucene.queryparser.classic.QueryParserBase.getFieldQuery(QueryParserBase.java:472)
01-03 00:53:25.417: E/AndroidRuntime(26352): at org.apache.lucene.queryparser.classic.QueryParserBase.getFieldQuery(QueryParserBase.java:494)
01-03 00:53:25.417: E/AndroidRuntime(26352): at org.apache.lucene.queryparser.classic.QueryParserBase.handleQuotedTerm(QueryParserBase.java:887)
01-03 00:53:25.417: E/AndroidRuntime(26352): at org.apache.lucene.queryparser.classic.QueryParser.Term(QueryParser.java:452)
01-03 00:53:25.417: E/AndroidRuntime(26352): at org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:247)
01-03 00:53:25.417: E/AndroidRuntime(26352): at org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:171)
01-03 00:53:25.417: E/AndroidRuntime(26352): at org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser.java:160)
01-03 00:53:25.417: E/AndroidRuntime(26352): at org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:118)
01-03 00:53:25.417: E/AndroidRuntime(26352): at com.abc.luceneprac.FAQs$ResultAdapter.getView(FAQs.java:574)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.AbsListView.obtainView(AbsListView.java:2604)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.ListView.makeAndAddView(ListView.java:1840)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.ListView.fillDown(ListView.java:681)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.ListView.fillFromTop(ListView.java:742)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.ListView.layoutChildren(ListView.java:1647)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.AbsListView.onLayout(AbsListView.java:2427)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.View.layout(View.java:14905)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.ViewGroup.layout(ViewGroup.java:4601)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.View.layout(View.java:14905)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.ViewGroup.layout(ViewGroup.java:4601)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.View.layout(View.java:14905)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.ViewGroup.layout(ViewGroup.java:4601)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1694)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1552)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.View.layout(View.java:14905)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.ViewGroup.layout(ViewGroup.java:4601)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.View.layout(View.java:14905)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.ViewGroup.layout(ViewGroup.java:4601)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2213)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2027)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1237)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5164)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.Choreographer.doCallbacks(Choreographer.java:591)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.Choreographer.doFrame(Choreographer.java:561)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.os.Handler.handleCallback(Handler.java:725)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.os.Handler.dispatchMessage(Handler.java:92)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.os.Looper.loop(Looper.java:176)
01-03 00:53:25.417: E/AndroidRuntime(26352): at android.app.ActivityThread.main(ActivityThread.java:5302)
01-03 00:53:25.417: E/AndroidRuntime(26352): at java.lang.reflect.Method.invokeNative(Native Method)
01-03 00:53:25.417: E/AndroidRuntime(26352): at java.lang.reflect.Method.invoke(Method.java:511)
01-03 00:53:25.417: E/AndroidRuntime(26352): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
01-03 00:53:25.417: E/AndroidRuntime(26352): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
01-03 00:53:25.417: E/AndroidRuntime(26352): at dalvik.system.NativeStart.main(Native Method)
И в моем проекте линия пятьсот семьдесят четвёртой,
это: Query query = queryParser.parse("\"how today\"~10");
Итак, как можно достичь желаемых результатов.
И также я хочу применить это, когда эта близость применяется к результатам поиска , список должен быть обновлен таким образом.
Спасибо.
Update--
Что об этом? Могу ли я использовать это?
\b(?:word1(?:\W+\w+){1,3}?\W+word2|word2(?:\W+\w+){1,3}?\W+word1)\b
??
Спасибо, @femtoRgon, позвольте мне попробовать. –
Я все еще пытаюсь, но как я могу применить близость более чем для двух слов? –
\ b (?: Word1 (?: \ W + \ w +) {1,3}? \ W + word2 | word2 (?: \ W + \ w +) {1,3}? \ W + word1) \ b есть любая проблема в этом синтаксисе? Могу ли я использовать это? –